Private Sub CommandButton1_Click() Dim Sh1 As Worksheet, Sh2 As Worksheet Set Sh1 = Worksheets("Sheet1") Set Sh2 = Worksheets("Sheet2") Dim keyWord As String keyWord = Control1.Caption & "_" & Control2.Caption & "_" & Control3.Caption 'Sh1のデータをオートフィルターする With Sheets("Sheet1").Range("A1") .AutoFilter field:=1, Criteria1:=keyWord .Offset(1).Columns("A:D").Copy End With 'Sheet2の2列目の最後の行の下に貼付 With Sh2.Range("A1").CurrentRegion .Cells(.Rows.Count + 1, 1).PasteSpecial End With Sh1.Range("A:D").AutoFilter Sh1.Activate End Sub
<実現したいこと>
以前、「VBA 複数のCheckBoxの組み合みせについて」でユーザーフォームのオプションボタンを作成の仕方を教えてもらい、その選択したボタンの結果をkeyWordとしてSheet1のシートをオートフィルターし、Sheet2に転記、データの抽出と貼り付けを複数回繰り返しデータ一覧を作成しようとしようとしています。
<エラー箇所>
1.コマンドボタン1を押したら、keyWordで検索しようとしていますが、検索してくれません。ユーザーフォームで押したボタンの値をオートフィルターをしようとしています、コードの修正箇所についてご教示ください。
2.コマンドボタン2を押したら、ユーザーフォームのボタンの値を一度にクリア(初期状態)にする方法を教えてください。
<修正しました>
Private Sub CommandButton1_Click() Dim Control1 As Control Dim Control2 As Control Dim Control3 As Control Dim keyWord As String keyWord = Control1.Caption & "_" & Control2.Caption & "_" & Control3.Caption For Each Control1 In Frame1.Controls If Control1.Value = True Then Exit For Next For Each Control2 In Frame2.Controls If Control2.Value = True Then Exit For Next For Each Control3 In Frame3.Controls If Control3.Value = True Then MsgBox Control1.Caption & "_" & Control2.Caption & "_" & Control3.Caption Exit For End If Next With Sheets("Sheet1").Range("A1") .AutoFilter field:=1, Criteria1:=keyWord .CurrentRegion.Offset(1, 0).Resize(.CurrentRegion.Rows.Count - 1, 4).Copy End With 'Sheet2の2列目の最後の行の下に貼付 With Sheets("Sheet2").Range("A1").CurrentRegion .Cells(.Rows.Count + 1, 1).PasteSpecial End With End Sub コード
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/19 02:20
2020/05/19 12:33
2020/05/19 13:11
2020/05/22 02:15
2020/05/22 07:04 編集
2020/05/23 14:06 編集