Excel2003を使っております。
Excel VBAに関しての質問です。
Sub test()
a = 5
b = 8
c = d = a + b
Cells(5, 99) = c
Cells(6, 99) = d
End Sub
のプログラムを実行してもFALSEと表示されてうまくいきません。
どうやら、
c = d = a + bに問題があるようです。
これって
c = a + b
d = c
と2つに分けなければならないものなのでしょうか?
見た目を良くするために、1つにまとめたいのですが、
何か良い方法はありませんでしょうか?
No.6ベストアンサー
- 回答日時:
たまたま、同じになってしまいましたが、途中まで、#4さんと同じ内容です。
c = d = a + b
このコード自体は、あまりこういう書き方はしませんが、True・False を返す目的としてはアリです。VB系の経験者なら、あまり書かないだけで、意味は分かるはずです。
通常は、
c = (d = a + b)
見かけのために、このように書きます。
dの値が、数値が入っていれば、 d と a + b と比較して、
値が
a = 5
b = 8
d = 13
c = d = a + b
c は Trueになります。
今回は、以下のようになるのかな?
Sub test()
Dim a As Long 'データ型の宣言をしてください。
Dim b As Long
Dim c As Long
a = 5
b = 8
c = a + b
Cells(5, 99).Value = c
Cells(6, 99).Value = c
End Sub
その後に、cの値が別途になるなら、その時に、d = c にすればよいです。
No.5
- 回答日時:
正確に言うと、この文は、VBの文法には違反していません。
これはどう解釈されるかというと、a+bとdがイコールかどうかの結果をcに代入している、と解釈されています。だから、falseなのです。
試しに、問題の行の前に、c=13と入れてみると…
VBの代入文は、C言語のように、評価結果を持たないみたいですね。
No.4
- 回答日時:
c = d = a + b
という式は、文法的には間違ってはいませんが、意味はあなたが考えているものではありません。
あなたが考えているのは、
a + b の値を d に代入し、d の値を c に代入する、
ということですよね。
でも、この式の場合、
d と a + b が等しかったら True 、等しくなかったら False を、c に代入する、
という意味になります。
一番左にある = は、代入演算子ですが、それ以外の = は比較演算子になります。
なので、c が Falseなのは当然です。
さらに、d には何も代入されていないので、やはりFalseなのは当然です。
No.3
- 回答日時:
> 見た目を良くするために、1つにまとめたいのですが、
意味が分かりません。
"見た目" って何?
規約違反をしているのにも関わらず、標準の Excel 環境で対処しようとするのは無理
があります。
※別途、Pre-Compiler などを作成して、対処するようなことを検討して
みてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・ことしの初夢、何だった?
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
jsp~jspにhiddenを使って変数...
-
Variant型で宣言してるのにEmpt...
-
エラーの意味は? Lvalue req...
-
EXCEL/VBA 変数の値をクリップ...
-
C言語 列挙型(enum型)変数について
-
java 乗算をシフト演算と加算を...
-
gridViewの行選択解除
-
ASP+SQLにてSessionがNullになる
-
テキストボックスの値を変数に...
-
[VBS]変数を定数に変換する方法...
-
i++と++i ってどう違うのですか?
-
レジストリの値獲得について
-
processing エラーで、 "cannot...
-
整数xxxが大き過ぎますというエ...
-
【VBA】複合代入演算子
-
PL/Iについて、教えてください。
-
bashシェル: 引用符で囲まない...
-
vba 最大値 条件分岐
-
プログラミングで変数と関数の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
jsp~jspにhiddenを使って変数...
-
EXCEL/VBA 変数の値をクリップ...
-
[VBS]変数を定数に変換する方法...
-
テキストボックスの値を変数に...
-
processing エラーで、 "cannot...
-
整数xxxが大き過ぎますというエ...
-
Variant型で宣言してるのにEmpt...
-
C言語 列挙型(enum型)変数について
-
gridViewの行選択解除
-
Excel VBAでイコール二回使えま...
-
stdpicture型の変数に、、
-
JavaScriptをURLから直接実行し...
-
インクリメント演算子の前置(+...
-
C言語 アロー演算子について質...
-
datagridviewに行...
-
verilog HDLの[=]と[<=]の使い分け
-
vba 最大値 条件分岐
-
i++と++i ってどう違うのですか?
おすすめ情報