- ベストアンサー
EXCEL VBAについて
EXCEL VBAについて教えてください やりたいことは以下の通りです。 ・全シートJ列1~100行目を検索しアルファベットが含まれるセルが存在すれば 上のセルをコピーする ここまで作ったのですが上手くいきません Sub VBAsample() Dim GYO As Long For GYO = 1 To 100 If Find([a-z], LookAt:=xlPart) Then Cells(GYO, 10).Value = Cells(GYO - 1, 10).Value End If Next GYO End Sub 添削をお願いします
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
これでどうでしょうか? Sub VBAsample() Dim GYO As Long For GYO = 1 To 100 If Cells(GYO, 10) Like "*[a-z]*" Then Cells(GYO, 10).Value = Cells(GYO - 1, 10).Value End If Next GYO End Sub
その他の回答 (3)
- DOUGLAS_
- ベストアンサー率74% (397/534)
>アルファベットが含まれるセルが存在すれば お示しのコードでは、 [a-z] となっていますので、半角・小文字のアルファベットだけなのでしょうか? 正規表現の使い方については、[回答番号:No.3] の web2525 さんがお示しになっていらっしゃいますが、もし、半角・大文字のアルファベットを含む場合は、 If Cells(GYO, 10) Like "*[a-z]*" Then の行を If Cells(GYO, 10).Value Like "*[A-z]*" Then となさってください([a-Z] ではなくて [A-z] です)。 さらに、全角の大文字・小文字のアルファベットも含む場合は、 If StrConv(Cells(GYO, 10).Value, vbNarrow) Like "*[A-z]*" Then となさってください。 ご参考までに ●正規表現のようなマッチング http://officetanaka.net/excel/vba/tips/tips35.htm ●正規表現によるマッチング http://officetanaka.net/excel/vba/tips/tips38.htm
- web2525
- ベストアンサー率42% (1219/2850)
If Find([a-z], LookAt:=xlPart) Then この使い方もおかしいのですが、どう直していいのかが? [a-z]正規表現が使えるのかどうかも?
- web2525
- ベストアンサー率42% (1219/2850)
とりあえずおかしなところ Cells(GYO, 10).Value = Cells(GYO - 1, 10).Value ループはGYO=1から始まっていますので最初の行がIF文に引っ掛かるとエラーになりますCell(0,10)は存在しません。