• 締切済み

エクセルのマクロについて

Sub ア_Click() Dim i As Long With ActiveSheet For i = 5 To .Cells(Rows.count, "C").End(xlUp).Row If InStr(.Cells(i, "C"), "ア") = 0 Then If InStr(.Cells(i, "D"), "ア(半角)") = 0 and .Cells(i,"D")<>"" Then MsgBox i & "行目" Cells(i, 2).Offset(0, -1).Value = "★" End If End If Next i End With End Sub このエクセルマクロはC列に「ア」があって、D列に「ア(半角)」の文字がない場合はメッセージというマクロなのですが、このマクロをア~ンまで同じ作業をしたいのですが、ひとまとめにマクロを組む事はできるのでしょうか?できる場合どのようにすれば良いでしょうか? 下記のようにして見たのですができませんでした。 Sub ア_Click() Dim i As Long With ActiveSheet For i = 5 To .Cells(Rows.count, "C").End(xlUp).Row If InStr(.Cells(i, "C"), "[ア-ン]") = 0 Then If InStr(.Cells(i, "D"), "[ア-ン](半角)") = 0 and .Cells(i,"D")<>"" Then MsgBox i & "行目" Cells(i, 2).Offset(0, -1).Value = "★" End If End If Next i End With End Sub

みんなの回答

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.4

これしか、思いつかなかった 折角なので、参考までに --------------------------------------- Sub ア_Click()  Dim i,ii As Long  Dim 全角,半角 As String  With ActiveSheet   For ii = 177 To 221    半角 = Chr(ii)    全角 = StrConv(半角, vbWide)    For i = 5 To .Cells(Rows.count, "C").End(xlUp).Row     If InStr(.Cells(i, "C"), 全角) = 0 Then      If InStr(.Cells(i, "D"), 半角) = 0 and .Cells(i,"D")<>"" Then       MsgBox i & "行目"       Cells(i, 2).Offset(0, -1).Value = "★"      End If     End If    Next i   Next ii  End With End Sub ----------------------------------- お粗末でした

  • pulsa
  • ベストアンサー率57% (34/59)
回答No.3

惜しかったですね もうちょいですよ たぶんこんな事かな?   For i = 5 To Cells(Rows.Count, "C").End(xlUp).Row     If Cells(i, "C") Like "[ア - ン]" Then     '"[ア - ン]"は全角       If Cells(i, "D") Like "[ア - ン]" And Cells(i, "D") <> "" Then '"[ア - ン]"は半角         MsgBox i & "行目"         Cells(i, 2).Offset(0, -1).Value = "★"       End If     End If   Next i (XP/Excel2003) Cells(i, "C") とかはあんまり使わない書き方ですが、まぁ動けはOKでしょう Like演算子は、あいまい検索だから使っちゃダメという、変わった方がたまにいますが、これは『Likeじゃないと動きません』 何か違うようでしたら、補足お願いします

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

>C列に「ア」があって、D列に「ア(半角)」の文字がない場合はメッセージというマクロなのですが、 >このマクロをア~ンまで同じ作業をしたいのですが ア~ンまではそれぞれ別の処理がしたいのですか? それとも半角の文字の有無により処理を変えたいのですか?

gogo545454
質問者

補足

C列に『ア』がある場合は必ずD列には半角の『ア』がなくてはならないんです。 Sub ア_Click() Dim i As Long With ActiveSheet For i = 5 To .Cells(Rows.count, "C").End(xlUp).Row If InStr(.Cells(i, "C"), "ア") = 0 Then If InStr(.Cells(i, "D"), "ア(半角)") = 0 and .Cells(i,"D")<>"" Then MsgBox i & "行目" Cells(i, 2).Offset(0, -1).Value = "★" End If End If Next i End With End Sub Sub イ_Click() Dim i As Long With ActiveSheet For i = 5 To .Cells(Rows.count, "C").End(xlUp).Row If InStr(.Cells(i, "C"), "イ") = 0 Then If InStr(.Cells(i, "D"), "イ(半角)") = 0 and .Cells(i,"D")<>"" Then MsgBox i & "行目" Cells(i, 2).Offset(0, -1).Value = "★" End If End If Next i End With End Sub Sub ウ_Click() Dim i As Long With ActiveSheet For i = 5 To .Cells(Rows.count, "C").End(xlUp).Row If InStr(.Cells(i, "C"), "ウ") = 0 Then If InStr(.Cells(i, "D"), "ウ(半角)") = 0 and .Cells(i,"D")<>"" Then MsgBox i & "行目" Cells(i, 2).Offset(0, -1).Value = "★" End If End If Next i End With End Sub 最終的にこのように作るとア~ンまでを1つ1つ作っていかなくてはいけないんです。これを何とか一本化できないでしょうか? Sub ☆_Click() ア_Click イ_Click ウ_Click  ・  ・  ・ End Sub

  • Masa2072
  • ベストアンサー率51% (94/182)
回答No.1

正規表現を使う もしくはFor NextでASC("ァ")からASC("゜")までをループ処理。 正規表現については http://www.microsoft.com/japan/msdn/columns/scripting/scripting051099.aspx http://www.officetanaka.net/excel/vba/tips/tips38.htm

関連するQ&A