Несколько кнопок для добавления в Excel - PullRequest
0 голосов
/ 19 июня 2020

Я хотел добавить кнопку в каждую строку для каждого действия с 11 по 35, кнопка находится в столбце «K11», а нажатие на макрос кнопки автоматически добавит имя пользователя и время в ячейку Q11 и введет текст как успех в ячейку N11

Я создал кнопку ниже в строке 11.

Sub addDetail()

Sheets("sheet1").Range("Q11").Value = _
        Environ("username") & " - " & Format(Now, "mm/dd/yyyy HH:mm:ss")
Range("N11").Value = "Success"
End Sub

нужно ли мне создавать этот код 25 раз, чтобы добавить код к каждой кнопке в каждой строке, или есть какой-либо другой метод?

Ответы [ 3 ]

2 голосов
/ 19 июня 2020

Рассмотрите возможность использования al oop:

Sub addDetail()
    Dim roww As Long

    With Sheets("sheet1")
        For roww = 11 To 35
            .Range("Q" & roww).Value = Environ("username") & " - " & Format(Now, "mm/dd/yyyy HH:mm:ss")
            .Range("N" & roww).Value = "Success"
        Next roww
    End With
End Sub

Аналогичным образом вы можете создать процедуру создания кнопок, которая использует al oop для размещения кнопок в строках с 11 по 35.

РЕДАКТИРОВАТЬ # 1:

Я поместил маленькую кнопку Forms в строку # 11 и назначил ей этот макрос:

Sub Button1_Click()
    Dim s As Shape
    shapename = Application.Caller
    Set s = ActiveSheet.Shapes(shapename)
    Call addDetail(s.TopLeftCell.Row)
End Sub

Макрос может быть используется для всех кнопок.

Макрос определяет строку, в которой он находится, и вызывает подпрограмму addDetails() с правильной информацией о строке. Мы должны изменить addDetails(), чтобы принять строку:

Sub addDetail(roww As Long)
    With Sheets("sheet1")
            .Range("Q" & roww).Value = Environ("username") & " - " & Format(Now, "mm/dd/yyyy HH:mm:ss")
            .Range("N" & roww).Value = "Success"
    End With
End Sub
1 голос
/ 19 июня 2020

Приложение Caller feat. Кнопки

Option Explicit

Sub addDetail_Click()
    On Error GoTo CleanExit
    Dim btnRow As Long
    With ActiveSheet
        btnRow = .Shapes(Application.Caller).TopLeftCell.Row
        .Cells(btnRow, "Q").Value = _
          Environ("username") & " - " & Format(Now, "mm/dd/yyyy HH:mm:ss")
        .Cells(btnRow, "N").Value = "Success"
    End With
CleanExit:
End Sub
1 голос
/ 19 июня 2020

Размещение 25 кнопок рядом друг с другом, вероятно, не лучший подход. Если вам это нужно, каждый Shape имеет атрибут TopLeftCell, поэтому вы можете использовать один и тот же код для всех 25 кнопок и заменить строки в двух диапазонах этим атрибутом.

Если вы будете счастливы с помощью только одной кнопки, как насчет создания такой настройки

enter image description here

, чтобы вы могли изменить строку, которую хотите отредактировать и которая просто нужна одна кнопка?

Sub addDetail()
    dim rowA as string
    rowA = range("B2").value

    Sheets("sheet1").Range("Q" & rowA).Value = _
        Environ("username") & " - " & Format(Now, "mm/dd/yyyy HH:mm:ss")
    Range("N" & rowA).Value = "Success"
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...