こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

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

投稿日時 - 2008-06-23 19:19:02

QNo.4123597

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.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
-----------------------------------
お粗末でした

投稿日時 - 2008-06-24 00:40:34

ANo.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じゃないと動きません』

何か違うようでしたら、補足お願いします

投稿日時 - 2008-06-23 23:48:59

ANo.2

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

投稿日時 - 2008-06-23 21:09:00

補足

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

投稿日時 - 2008-06-23 21:48:32

ANo.1

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

投稿日時 - 2008-06-23 19:40:06

あなたにオススメの質問