vba 버튼 - 클릭한 항목 찾기
몇 개의 버튼에 매크로를 할당했습니다.
매크로에서 어떤 버튼이 클릭되었는지 어떻게 알 수 있습니까?
저는 가족의 사람들을 입력할 수 있는 사용자 양식으로 하고 있습니다.
이름 1:
성 1:
이름 2:
성2: |다음 멤버 추가|
마지막으로 추가한 사람의 마지막 행에 항상 버튼이 나타나길 바랍니다.단순화를 위해서는 시트에 100개 정도의 빈 형태가 있지만 처음에는 모두 보이지 않는 것이 좋다고 생각합니다.
그런 다음 사용자가 다음 구성원 추가를 클릭하면 다음 행을 표시하고 단추를 다음 사용자로 이동합니다.하지만 그러기 위해서는 저의 현재 위치를 알아야 합니다.
삭제와 마찬가지로 제거 버튼을 클릭하면 행이 보이지 않게 됩니다.
이름 1:
성 1: [제거]
이름 2:
성2: [제거]
이름 3:
성씨 3: |다음 멤버 추가|
어떤 제거 버튼이 클릭되었는지 알아야 합니다.
편집: 웹에서 발견 - 어떻게 생각하세요, 가장 좋은 방법인 것 같습니다.
Dim r As Range
Set r = ActiveSheet.Buttons(Application.Caller).TopLeftCell
Range(Cells(r.Row, r.Column), Cells(r.Row, r.Column)).Select
저는 항상 해당 매크로를 호출하는 각 버튼에 대해 래퍼를 작성합니다.
이와 같은 경우:
Public Sub StoreButton_Click()
Call StoreTransValues(ActiveSheet)
End Sub
한 페이지에 대해 단추가 하나만 있는 경우 ActiveSheet 속성만 얻을 수 있습니다. 그러면 해당 페이지의 단추가 됩니다.
편집:
호출 단추의 이름을 가져오고 사용하는 코드는 다음과 같습니다.
Dim ButtonText As String
ButtonText = Application.Caller
ActiveSheet.Shapes(ButtonText).Delete
를 사용합니다.메서드를 이동하여 단추를 이동합니다.
워크시트에서 어떤 버튼을 눌렀는지 확인할 수 있는 해결책을 찾았습니다.신용카드는 http://www.ozgrid.com/forum/showthread.php?t=33351 에서 Derk에게 지급해야 합니다.
마지막 예제 코드:
Sub HereIAm()
Dim b As Object
Dim cs, rs As Integer
Dim ss, ssv As String
Set b = ActiveSheet.Buttons(Application.Caller)
With b.TopLeftCell
rs = .Row
cs = .Column
End With
ss = Left(Cells(1, cs).Address(False, False), 1 - (ColNumber > 26)) & rs
ssv = Range(ss).Value
MsgBox "Row Number " & rs & " Column Number " & cs & vbNewLine & _
"Cell " & ss & " Content " & ssv
End Sub
셀 레이블이 필요하지 않으면 셀(rs,cs)입니다.가치도 작용합니다.
Dim button as a string:
button = ActiveSheet.Shapes(Application.Caller).Name
당신의 버튼에 매크로가 연결되어 있기 때문에, 어떤 버튼이 클릭되었는지 알고 있을 것입니다.단추의 위치를 가져오려면 다음을 사용합니다.
ActiveSheet.Shapes("ButtonName").TopLeftCell.Address
단추를 새 위치로 이동하려면 다음을 사용합니다.
Dim NewAddress as Range
NewAddress = ActiveSheet.Cells(5, 5) 'Or where ever you need it to go
ActiveSheet.Shapes("ButtonName").Left = NewAddress.Left
ActiveSheet.Shapes("ButtonName").Top = NewAddress.Top
언급URL : https://stackoverflow.com/questions/3857928/vba-button-find-which-was-clicked
'programing' 카테고리의 다른 글
AsyncTask가 별도의 클래스이기 때문에 OnPostExecute()의 결과를 주 활동으로 가져오는 방법은 무엇입니까? (0) | 2023.08.30 |
---|---|
기록에 영향을 미치지 않고 해시 탐색을 사용할 수 있습니까? (0) | 2023.08.30 |
RMariaDB 및 R의 풀을 사용하여 MariaDB로 전송된 여러 JSON 문자열 검사 (0) | 2023.08.30 |
C# ExpandoObject에서 이름으로 속성을 동적으로 가져오는 방법은 무엇입니까? (0) | 2023.08.30 |
PowerShell을 사용하여 모든 SVN 파일을 재귀적으로 삭제하는 방법 (0) | 2023.08.30 |