0

シートのボタンを押してこの関数を呼び出すにはどうすればよいですか? マクロが実行されることを確認できるようにしたいのですが、現在、コードを開いて最後の end sub の後に Enter キーを押した場合にのみ実行されます。

Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4




Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Key As Integer

If Target.Count > 1 Then Exit Sub

Key = GetKeyState(MOUSEEVENTF_LEFTDOWN)

If Key And 1 Then
If IsNumeric(Target.Value) Then
    Target.Value = Target.Value + 1
    Application.EnableEvents = False
        Target.Resize(1, 2).Select
    Application.EnableEvents = True
End If
Cancel = True
End If



End Sub
4

1 に答える 1

0

シートのボタンを押してこの関数を呼び出すにはどうすればよいですか?

あなたはそうしない。このメソッドは、ワークシートの変更イベントに強く結び付けられています。

あなたがすべきことは、このコードを別のサブに分離Clickし、シートのボタンのメソッドで呼び出すことができるようにすることです。

Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4


Private Sub CommandButton1_Click()
myWorksheetChange Range("A1") 'or whatever range you want to call it using

end Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
myWorksheetChange Target

End Sub



Public Sub myWorksheetChange(ByVal Target as Range)

    Dim Key As Integer

    If Target.Count > 1 Then Exit Sub

    Key = GetKeyState(MOUSEEVENTF_LEFTDOWN)

    If Key And 1 Then
    If IsNumeric(Target.Value) Then
        Target.Value = Target.Value + 1
        Application.EnableEvents = False
            Target.Resize(1, 2).Select
        Application.EnableEvents = True
    End If
    Cancel = True
    End If

End Sub
于 2013-10-23T22:14:38.327 に答える