1
Я пытался использовать кнопку1 для активации кнопки2. Проблема в том, что button2 должен использовать application.caller, который по умолчанию используется для кнопки первоначально нажатой (кнопка1).Вручную установить Application.Caller в Excel VBA
Как установить новое значение для application.caller?
Вот пример кода:
Button1:
Sub ShowAttack()
'Change the color of the other buttons to the background color.
'Pressed button to lighter color.
ActiveSheet.Shapes("AttackButton").Fill.ForeColor.RGB = 14277081
'Other buttons to darker colors.
ActiveSheet.Shapes("DefenseButton").Fill.ForeColor.RGB = 12566463
ActiveSheet.Shapes("SpellButton").Fill.ForeColor.RGB = 12566463
'Toggle Appropriate Cells to unhide
Dim button As Shape
Set button = ActiveSheet.Shapes("AttackButton")
rw = button.TopLeftCell.Row
Rows((rw + 4) & ":" & (rw + 74)).EntireRow.Hidden = False
'Hide appropriate cells within shown section
Set Application.Caller = ActiveSheet.Buttons("WeaponDetailsButton1").Name
Application.Run ActiveSheet.Buttons("WeaponDetailsButton1").OnAction
Range("AT51").Select
End Sub
Кнопка 2:
Sub HideWeaponDetails()
Dim b As Object, cs As Integer, rw As Integer
Dim sel01 As Integer, sel02 As Integer
Set b = ActiveSheet.Buttons(Application.Caller)
With b.TopLeftCell
cs = .Column
rw = .Row
End With
sel01 = rw + 4
sel02 = rw + 14
Rows(sel01 & ":" & sel02).Select
If Selection.EntireRow.Hidden = False Then
Selection.EntireRow.Hidden = True
Else
Selection.EntireRow.Hidden = False
End If
Range("A" & rw - 4).Select
ActiveSheet.Buttons(Application.Caller).Name = "WeaponDetailsButton" & Selection(1).Value
Range("AV47").Value = ActiveSheet.Buttons(Application.Caller).Name
Range("A1").ClearOutline
End Sub
Вы не можете установить это значение - переместите основную функциональность из кнопки2 в отдельную подсистему, у которой есть параметр, по которому вы можете передать вызывающего: теперь вы можете вызовите это с любой кнопки 1 или кнопки 2. Было бы проще разместить образец кода, если бы ваш существующий код был включен здесь. –
Конечно. Положить его. Благодаря! – CodeHead