dポイントプレゼントキャンペーン実施中!

初心者です。
If A.value = "" Then
A'.value = "××××"
Else ‥‥
End If
という処理を、A.value,B.value,C.value‥‥と複数に対して行いたい場合、
コードをできるだけ短くまとめる方法を教えて頂けませんでしょうか。
"××××"の部分はすべて同じ文字を表示させたいと思っています。

よろしくお願い致します。

質問者からの補足コメント

  • うれしい

    ご回答いただきました皆様、ありがとうございました。
    質問の仕方もわかっておらずご迷惑をおかけしております。
    皆様から教えて頂いたコードを試してみて、またご報告させていただきます。

    この度は本当にありがとうございました。

      補足日時:2020/04/04 21:52
  • へこむわー

    ご回答いただきました皆様へ
    この度は、大変丁寧なご回答を頂き、本当にありがとうございました。

    現状、私の力不足で解決には至っておりませんが、
    ご教示いただきました事を無駄にしないよう、精進します。

      補足日時:2020/04/07 20:50

A 回答 (5件)

そもそも A,B,C が何を指しているのかが不明ですけど。

(Range型の変数?)

不特定な場所のセルに対してって事であればループも For Each~Next を使用して、

Sub megu()
Dim r As Range

For Each r In Range("A1,B2,C3")

If r.Value = "" Then
r.Value = "******"
Else
End If

Next
End Sub

こんな感じにも書けますけど。
    • good
    • 1
この回答へのお礼

めぐみん様 ご回答ありがとうございました。ご教示頂きましたコードを試してみます。

お礼日時:2020/04/04 21:45

「ループのほうは多分使えない」とのことなので・・・。



Range("A1,B2,C3").SpecialCells(xlCellTypeBlanks).Value = "xxxx"
    • good
    • 1
この回答へのお礼

ママチャリ様 ご回答ありがとうございました。
こんなに短くできるのですね。試してみます。

お礼日時:2020/04/04 21:48

NO2 です。

For NEXT も Do Until Loopもこの場合横(列)に1列づつ移動します。Cells(Row,Column)のため・・・
たとえば、縦(行)で移動したい場合はCells(CntI,1)と設定してくださいね。
    • good
    • 0
この回答へのお礼

yamachan5407様、ありがとうございました。

お礼日時:2020/04/03 22:03

私なら、同じシートのモジュール内にプロシジャーを入れて繰り返し処理をしたり、Value値のオブジェクトがセルであるならばFor NextやDo Until~Loopで繰り返し処理を行いますね。



たとえばセルが連続して100個つながっているのであれば・・・・
Public Sub TEST1()
Dim CHKCELL As Range
Dim CNTI As Long
Set CHKCELL = Range("A1")
For CNTI = 1 To 100
If CHKCELL.Cells(1, CNTI).Value = "" Then
CHKCELL.Cells(1, CNTI).Value = "XXXXX"
End If
Next CNTI
End Sub

たとえば、文字が入力しているセルまでなら

Public Sub TEST2()
Dim CHKCELL As Range
Dim CNTI As Long
Set CHKCELL = Range("A1")
Do Until CHKCELL.Cells(1, CNTI).Value <> ""
CHKCELL.Cells(1, CNTI).Value = "XXXXX"
CNTI = CNTI + 1
Loop
End Sub

セルに統一性がないなら・・・

Public Sub TEST3()

Call XXXXNYURYOKU(Range("A1"))
Call XXXXNYURYOKU(Range("D1"))
Call XXXXNYURYOKU(Range("G3"))

End Sub

Private Sub XXXXNYURYOKU(ByVal RngCELL As Range)
If RngCELL.Value = "" Then
RngCELL.Value = "XXXXX"
End If
End Sub
    • good
    • 0
この回答へのお礼

yamachan5407様、ご回答ありがとうございました。
初心者なので、ご回答いただいた例文をひとつづつ確認してコードを作りたいと思います。

お礼日時:2020/04/03 22:02

こんばんは!



具体的な配置が判らないので・・・

① 範囲をFor~Nextでループさせる
② 「置換」で一気にできそうなので、Replaceメソッドで一気に置換する。

って感じでしょうかね。m(_ _)m
    • good
    • 0
この回答へのお礼

tom04様、早速のご回答ありがとうございます。ループのほうは多分使えないので、②を試してみます。

お礼日時:2020/04/03 21:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています