Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12773 / 13646 ツリー ←次へ | 前へ→

【8708】Target.Valueが空白の時 ぴかる 03/10/29(水) 17:14 質問
【8709】Re:Target.Valueが空白の時 つん 03/10/29(水) 17:25 発言
【8710】Re:Target.Valueが空白の時 ぴかる 03/10/29(水) 17:48 お礼
【8711】Emptyの罠 りん 03/10/29(水) 18:20 発言
【8718】無駄レス(Empty値について) BOTTA 03/10/30(木) 10:28 発言
【8741】Re:無駄レス(Empty値について) ぴかる 03/10/30(木) 17:44 お礼
【8742】ちょっと訂正 BOTTA 03/10/30(木) 18:03 発言
【8759】Re:ちょっと訂正 つん 03/10/31(金) 10:57 発言

【8708】Target.Valueが空白の時
質問  ぴかる  - 03/10/29(水) 17:14 -

引用なし
パスワード
   こんにちは。

久しぶりにVBAに取り組んでいます。そしてちと壁にぶち当たりました。
SelectionChangeイベントにて、Target.Valueが空白の時の処理がうまく行きません。
条件を(Target.Value="")では、ダメでした。
(Target.Value=Empty値)とするには、どのようにしたらいいのでしょうか?。
よろしくお願いします!。

【8709】Re:Target.Valueが空白の時
発言  つん E-MAIL  - 03/10/29(水) 17:25 -

引用なし
パスワード
   ぴかる さん、こんにちは

>久しぶりにVBAに取り組んでいます。そしてちと壁にぶち当たりました。
>SelectionChangeイベントにて、Target.Valueが空白の時の処理がうまく行きません。
>条件を(Target.Value="")では、ダメでした。
>(Target.Value=Empty値)とするには、どのようにしたらいいのでしょうか?。
>よろしくお願いします!。

えと、選択したセルが空白かどうかの判断ってことですよね?

  If Target.Value = "" Then
    MsgBox "空白"
  End If


  If Target.Value = Empty Then
    MsgBox "なんもなし"
  End If

両方OKやったけど……
こういうことじゃないのかな?
最近こういう回答でボケかましてばかりなので、やばいかも〜(^^;

【8710】Re:Target.Valueが空白の時
お礼  ぴかる  - 03/10/29(水) 17:48 -

引用なし
パスワード
   つんさん、こんにちは

>両方OKやったけど……
>こういうことじゃないのかな?
>最近こういう回答でボケかましてばかりなので、やばいかも〜(^^;
はい、ボケてばかりでやばいです。あっしが・・・。
問題のあったとこは、別のとこでした。多条件のIf文なんで、ポイントを間違ってました。
久しぶりやし、強烈な睡魔にも襲われなかなか進みません。明日は、気合いだ!。
ていうことでどうもありがとうございました。まだまだ素人領域の自分を実感!。

【8711】Emptyの罠
発言  りん E-MAIL  - 03/10/29(水) 18:20 -

引用なし
パスワード
   つんさん、ぴかる さん、こんばんわ。

Private Sub Worksheet_Change(ByVal Target As Range)
  With Target
   If .Value = Empty Then
     MsgBox .Value, vbInformation, "空白"
   Else
     MsgBox .Value, vbInformation, "値"
   End If
  End With
End Sub

このイベントを組み込んだシートのセルに「0」を入力してみてね。

最近ではINAさんが分岐マクロをつくっておられるのでそっちも見てね。
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=8639;id=excel

【8718】無駄レス(Empty値について)
発言  BOTTA  - 03/10/30(木) 10:28 -

引用なし
パスワード
   ぴかるさん、つんさん、りんさん、こんにちは。

ヘルプより
Empty 値
バリアント型 (Variant) 変数に格納できる特殊な値の 1 つ。その変数が初期化され
ていないことを示し、VarType 0 で示されます。この値は、数値としては 0 と評価さ
れ、文字列としては長さ 0 ("") の文字列と評価されます。

ということはTarget.Valueと比較する際にEmptyという値が数値に変換されている。
---->勝手にVal(Empty)をしている。ということになります。
即ち.Value = Emptyという式の評価は
  .Value = 0と同義
この場合は
If IsEmpty(.Value) Then
とすべき。
IsEmpty(0) = False
IsEmpty(Empty) = True
IsEmpty(Val(Empty)) = False

【8741】Re:無駄レス(Empty値について)
お礼  ぴかる  - 03/10/30(木) 17:44 -

引用なし
パスワード
   みなさん、こんにちは。

りんさん、BOTTAさん
おいしいレスありがとうございました。いいスパイスが効いてて、とてもナイスな栄養補充となりました。また、ごちそうして下さいネ!。

【8742】ちょっと訂正
発言  BOTTA  - 03/10/30(木) 18:03 -

引用なし
パスワード
   .Value = 0と同義

.Value = 0 Or (本当のEmpty値) と同義

【8759】Re:ちょっと訂正
発言  つん E-MAIL  - 03/10/31(金) 10:57 -

引用なし
パスワード
   こんにちは〜

りんさん、BOTTAさん。
なるほど〜。丁寧な説明でよーわかりました(^o^)
なんか色々難しいなあ〜(T_T)

12773 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free