Excel VBA について


Dim i As Integer
For i = 1 To 8000
Range("A" & i).Select
If Range("A" & i) = "" Then
Selection.ClearContents
End If
Next i
End Sub

A1 から A8000 まで処理を繰り返した後、B1 から B8000 まで…そのあとはC1に行って…で、
最終的にES8000まで繰り返したいのですが、何かいい方法はないでしょうか…。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2006/06/29 16:12:58
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:taknt No.1

回答回数13539ベストアンサー獲得回数1198

ポイント60pt

Dim i As Integer

Dim a As Integer

For a = 1 To 149

For i = 1 To 8000

If Cells(i, a) = "" Then

Cells(i, a).ClearContents

End If

Next i

Next a

とすればいいでしょう。

id:panana

列番号も足していけるんですね。勉強になりました。

質問文の"A"の部分をいちいち書き直さなきゃならないかと思いました。

助かりました。ありがとうございました!

2006/06/29 16:12:02
  • id:llusall
    'ESを149に変換することもできます。
    col_max = Columns("ES").Column
  • id:gong1971
    For Each を使う方法もありますね。
  • id:llusall
    Renge で For Each ?
  • id:gong1971
    Dim rg As Range
    For Each rg In Range("A1:ES8000")
    って感じで。変ですかねぇ?
  • id:llusall
    全然変じゃないと思います。
    それは思いつきませんでした。
  • id:llusall
    あっ、大事な事を忘れていました!!!

    何故、"" の場合に、ClearContents するのでしょうか?


    最初、
    Range("A1:ES8000").ClearContents
    でおしまいなのかと思ってました。
    何か変な事言ってますかねぇ。
  • id:panana
    コメントありがとうございます。
    ExcelのVBAは「マクロの自動記録」でできたものをなんとなくいじる程度なので、
    応用をきかせるのがなかなか難しいです。
    llusallさんとgong1971さんの会話(?)が理解できるように頑張ります。
    またご指導よろしくお願いします。
  • id:gong1971
    > llusallさん
    > 何故、"" の場合に、ClearContents するのでしょうか?

    推測ですが... =IF(B1=0,"",A1/B1) みたいな数式が
    入っているんじゃないかなーと思いました。
    (もしくは、その数式を値貼り付けした状態とか...←これはすごく厄介!)

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません