• ベストアンサー

IF構文の使い方

皆さんにはいつもお世話になっております。 エクセルVBAでご教授していただきたいことがあります。 1行目は空白行で、B2~CW51がデータがあるセルです。 A列は空白列で、B列(B2以降)にデータがある場合は、ListBox3の文字列を同行のcell(i , "A")に代入したいのですが。 下記のように、if構文を使ってみたのですが、うまくいきません。 Sub テスト_Click() Dim i As Integer With ActiveSheet For i = 2 To 51 If .Cells(i, "B") = "" Then .Cells(i, "A") = "" Else Cells(i, "A") = ListBox3.Value Exit For End If Next End With End Sub よろしくお願いいたします。

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

  • ベストアンサー
  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.4

ANo.3です。 追記。 もし、「全部の行に設定したいのに、途中までしか設定されない」とかだったら、 > Cells(i, "A") = ListBox3.Value > Exit For > End If この「Exit For」の所為なので、削除すれば全部処理されますけど・・・

simons_ok
質問者

お礼

dsuekichiさん、ありがとうございました。 Exit Forを削除したら出来ました。やはり、コピペで作ろうとしていたのが悪かったようです。少し勉強してから先に進んで行きたいと思います。 本当、ありがとうございました。

その他の回答 (4)

noname#221368
noname#221368
回答No.5

 もしかしたらですが、   If .Cells(i, "B") = "" Then の部分で、実際には、.Cells(i, "B") = " "とかにはなっていませんか?。Trim(.Cells(i, "B"))とすれば、.Cells(i, "B") = " "でも""になります。

simons_ok
質問者

お礼

ddtddtddtさん、ご回答ありがとうございました。 原因は、Exit Forでした。今度は勉強してから、ミスをなくすように頑張ります。 本当ありがとうございました。

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.3

どう、上手くいかないのでしょう? 提示されたコードを試してみましたが・・・ とりあえず、ちゃんと動いているように見えますが・・・ 「ListBox3で何も選択しないで実行した」なんて事は無いですよね?

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.2

訂正です。 Cells(x,y)の表記をCells(x,y).Valueに変更されてみたらどうなりますか??

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.1

http://excelvba.pc-users.net/fol2/2_1.html Cells(x,y)の表記をCells(x,y)>Valueに変更されてみたらどうなりますか??

simons_ok
質問者

お礼

すみません。勉強不足でした。Exit Forをはずしたら出来ました。 kokoroneさん、わざわざご回答いただいたのに申し訳ありませんでした。

関連するQ&A