前提・実現したいこと
ユーザーフォームの処理ボタンを押下した際に、条件に応じて複数処理をしたいです。
【条件1】
コンボボックスで 設問3_アンケート が選択されている場合
Callを使用し 会員の重複_設問3 と 会員以外の回答者_設問3 の処理を実施
【条件2】
コンボボックスで 設問5_アンケート が選択されている場合
Callを使用し 会員の重複_設問5 と 会員以外の回答者_設問5 の処理を実施
発生している問題・エラーメッセージ
エラーはないですが、各設問の処理に対して 会員以外の回答者 しか処理がされず
会員の重複 が処理されず困っております。
該当のソースコード
VBA
1Private Sub CommandButton4_Click() 2 3 Application.ScreenUpdating = False 4 5 If ComboBox1 = "設問3_アンケート" Then 6 Call 会員の重複_設問3 7 Call 会員以外の回答者_設問3 8 ElseIf ComboBox1 = "設問5_アンケート" Then 9 Call 会員の重複_設問5 10 Call 会員以外の回答者_設問5 11 End If 12 13 Worksheets(1).Name = "照合結果" 14 15 Application.ScreenUpdating = True 16 17End Sub
設問5も下記と同様のコードですが、E列の部分がG列になります。
VBA
1Sub 会員の重複_設問3() 2 Dim sh1 As Worksheet 3 Dim maxrow As Long 4 Dim wrow As Long 5 Dim dicT As Object 6 Dim key As String 7 Set dicT = CreateObject("Scripting.Dictionary") 8 Set sh1 = Worksheets("Sheet1") 9 maxrow = sh1.Cells(Rows.Count, "E").End(xlUp).Row 'Sheet1 E列最大行 10 sh1.Range("E2:E" & maxrow).Interior.Pattern = xlNone 11 For wrow = 2 To maxrow 12 key = sh1.Cells(wrow, "E").Value 13 If dicT.exists(key) = False Then 14 dicT(key) = True 15 Else 16 Cells(wrow, "E").Interior.Color = RGB(255, 0, 0) 'E列の該当セルは背景を赤色 17 End If 18 Next 19End Sub
こちらも設問5も下記と同様のコードですが、E列の部分がG列になります。
VBA
1Sub 会員以外の回答者_設問3() 2 Dim x As Long 3 Dim i As Long 4 5 With Sheets("Sheet1") 6 x = .UsedRange.Cells(.UsedRange.Count).Row 7 .Range("E2:E" & x).Interior.Pattern = xlNone 8 For i = x To 2 Step -1 9 If Sheets("Sheet2").Range("A:A").Find(What:=.Cells(i, 5), LookAt:=xlWhole) Is Nothing Then '一致しない 10 .Cells(i, 5).Interior.Color = RGB(0, 0, 255) 'E列の背景を青色に 11 End If 12 Next i 13 End With 14End Sub
補足情報(FW/ツールのバージョンなど)
Office 2019を使用しています。
デバッグはされましたか?(会員の重複_設問3() の中の動きを1行ずつ追ってみると原因が分かるのではないでしょうか?)
各プロシージャ名ごとでは問題なく処理されます。
そのためCommandButton4_Clickのプロシージャ名で
まとめて処理する際に問題があるかと思っていました。
何か原因お分かりでしたらご教授いただけないでしょうか。
回答3件
あなたの回答
tips
プレビュー