2017-04-26 12 views
0

実際に私はExcel vbaアプリケーションを開発していますが、問題があります。ワークシート(Worksheet_Change)のイベントを使用していますが、私はマクロが有効になっている場合、Excel VBAからWorksheet_Changeを変更する方法

マクロが実行...マクロが実行されている場合、このイベントが実行されないことをしたいときや、ユーザー押しボタン有効ので、私は、ユーザーがボタンをクリックすることを望ん(アクティブマクロ)すべてのロジック私は実行できないworksheet_Changeで持っているか、機能..私は私のworksheet_changeでこれを持って

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim aCell As Range, Rng As Range 
    Dim SearchString As String 
    Dim myValue As Variant 
    Set Rng = Range("F10:F153") 
    Dim myList As Object 
    Set myList = CreateObject("Scripting.Dictionary") 
    myList.Add "1234", 1 
    myList.Add "12345", 2 
    myList.Add "123456", 3 
    SearchString = "Error" 

    For Each aCell In Rng 
     If InStr(1, aCell.Value, SearchString, vbTextCompare) Then 
      MsgBox "Error encontrado. " 
      myValue = InputBox("Inserte el numero de empleado de algun operador de calidad") 
      If myList.Exists(myValue) Then 
       MsgBox "Numero de empleado correcto, verifique su error." 
      Else 
      While myList.Exists(myValue) = False 

       myValue = InputBox("Inserte el numero de empleado de algun miembro de calidad") 
      Wend 
      MsgBox "Numero de empleado correcto, verifique su error." 
      End If 
     End If 
     Next 
End Sub 

答えて

0

を使用するには、ここで押すことができますまたはいくつかのボタンにユーザーに依存オフイベントを回して、最小限の例です。

あなたはどのようなボタンが押されたご質問には言及していない - あるいはどのようなコードが実行される - しかし、あなたは以下のあなたの状況にコードを適応させることができる必要があります:あなたはシート上の2つのボタンがあり

: Sheet1のコードモジュール内でenter image description here

Option Explicit 

Dim blnUserFlag As Boolean 

Public Sub Button1_Click() 
    blnUserFlag = True 
End Sub 

Public Sub Button2_Click() 
    blnUserFlag = False 
End Sub 

Private Sub Worksheet_Change(ByVal Target As Range) 
    If blnUserFlag = False Then 
     'do stuff 
     Debug.Print "change" 
    End If 
End Sub 

右の各ボタンをクリックして、ボタンにButton1_ClickButton2_Clickを割り当てるマクロのオプションを使用します。

この技術では、ボタンで「オン」または「オフ」にできるイベントコードの外に、blnUserFlagという変数(Boolean)の変数を設定します。これは、イベント内のコードを実行できるかどうかを制御します。

+0

ありがとう、よく説明されています。最後に私は:) – Fernando

3

、イベントを無効にするイベントを再度有効にするには

Application.EnableEvents = False 

を使用し、

Application.EnableEvents = True 
+0

マクロが有効かどうか、またはユーザーがExcelにあるボタンをクリックしたかどうかを知る必要があります。 – Fernando

+1

ボタンによってトリガーされるマクロにこれらの行を挿入してください。 –

関連する問題