• ベストアンサー

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 添削をお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.3

これでどうでしょうか? 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)
回答No.4

>アルファベットが含まれるセルが存在すれば お示しのコードでは、 [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)
回答No.2

If Find([a-z], LookAt:=xlPart) Then この使い方もおかしいのですが、どう直していいのかが? [a-z]正規表現が使えるのかどうかも?

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.1

とりあえずおかしなところ Cells(GYO, 10).Value = Cells(GYO - 1, 10).Value ループはGYO=1から始まっていますので最初の行がIF文に引っ掛かるとエラーになりますCell(0,10)は存在しません。

関連するQ&A