2017-11-14 16 views
1

自動フィルタを使用するワークシート上で実行できるマクロを作成しようとしています。理想的な世界では、マクロには3つのオプションがあります。VBAフィルタされたデータの選択を処理するメッセージボックス

1)表示されている最初の行の特定のVBA命令セット(以下のコードではカラーセルB2)を実行しますヘッダー)、次の表示行に移動し、メッセージボックスを再度表示します。
2)この行をスキップして、次に表示される行を見つけて、メッセージボックスを再度表示します。
3)マクロを終了します。

私は下のマクロの裸の骨を持っていますが、最初の2つのボタンが押された後にもう一度メッセージボックスを表示するという巧妙な方法がないと感じています。また、マクロを終了させるために私のコードでは納得できません。

FYI:フラット・アウト・ループ・マクロではなくメッセージ・ボックスの理由は、フィルターが定期的に変更されるため、必要なフィルターに基づいてコードを書き直す必要性を減らすためです。

Sub Msg_exe() 
    Dim Option_Menu As Integer 
    Dim strMsg As String 
    Dim strTitle As String 

    Range("B2").Select 
    strMsg = "Continue with this row" 
    strTitle = "Alert" 

    Option_Menu = MsgBox(strMsg, vbYesNoCancel + vbQuestion, strTitle) 

    Select Case Option_Menu 
     Case 6 'code to colour the cell goes here 
      Selection.Font.ColorIndex = 25 
      Selection.Interior.ColorIndex = 33 
      ActiveCell.Offset(1, 0).Activate 
      Do While ActiveCell.EntireRow.Hidden = True 
       ActiveCell.Offset(1, 0).Activate 
      Loop 
      'I need some code to show the message box again ready for the next row 

     Case 7 'code to skip to the next visable line goes here 
      ActiveCell.Offset(1, 0).Activate 
      Do While ActiveCell.EntireRow.Hidden = True 
       ActiveCell.Offset(1, 0).Activate 
      Loop 
      'I need some code to show the message box again ready for the next row 

     Case 2 'the code to end the macro goes here (I hope this is correct) 
      End 
    End Select 
End Sub 

答えて

0

あなたは(私はこれが最初の要件と一致して確認してくださいテストしていない)あなたが決めるどの行で始まる行をループし、可能性、および計算は、その後必要になるかどうかを確認:

Sub Msg_exe() 

    Dim cur_row as long 
    Dim Option_Menu As Integer 
    Dim strMsg As String 
    Dim strTitle As String 

    For cur_row = 2 to Range("A65000").End(xlUp).Row 'Modify this row referenced to suit 

     if not Range("B" & cur_row).EntireRow.Hidden then 

      Range("B" & cur_row).Select 
      strMsg = "Continue with this row" 
      strTitle = "Alert" 

      Option_Menu = MsgBox(strMsg, vbYesNoCancel + vbQuestion, strTitle) 

      Select Case Option_Menu 
       Case 6 'code to colour the cell goes here 
        Selection.Font.ColorIndex = 25 
        Selection.Interior.ColorIndex = 33 
       Case 7 'code to skip to the next visible line goes here 
       Case 2 'the code to end the macro goes here (I hope this is correct) 
        Exit Sub 
      End Select 

     End If 

    Next 

End Sub 
+0

優れています。あなたが持っているスポットがあります、これは本当にありがとうございます。 – user8939012

+0

喜んで、これで問題が解決した場合は、この回答を正しいとマークしていただければ幸いです。ありがとう – AranDG

関連する問題