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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Excel(エクセル) ExcelVBAの、Index matchについて 2 2023/04/18 16:57
- Visual Basic(VBA) EXCEL VBAで NHK NEWSの NEWSデータ内容取得が できない 1 2023/04/09 12:26
- Excel(エクセル) Excel VBA 空白行があるセル範囲に色を付ける 3 2022/06/13 15:58
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Excel(エクセル) Excel VBAで、行の高さを、上下1文字分程度高くしたい 3 2023/04/23 00:17
- Visual Basic(VBA) EXCELのVBAについて 2 2023/07/05 17:17
- Visual Basic(VBA) モードレスでユーザーフォームが開け(表示)ません。 4 2022/09/09 11:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
C言語 列挙型(enum型)変数について
-
「%」を使って、偶数か奇数かを...
-
[VBS]変数を定数に変換する方法...
-
テキストボックスの値を変数に...
-
整数xxxが大き過ぎますというエ...
-
Accessコンボボックスにレコー...
-
ExcelのVBAでをA列に第0〜19項...
-
EXCEL/VBA 変数の値をクリップ...
-
構造体からレコードセットへの代入
-
python の 連鎖代入の文法
-
変数にオフセットが付いている...
-
processing エラーで、 "cannot...
-
プログラミングで変数と関数の...
-
切り上げ
-
i++と++i ってどう違うのですか?
-
vba 最大値 条件分岐
-
インクリメント演算子の前置(+...
-
JavaScriptをURLから直接実行し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
EXCEL/VBA 変数の値をクリップ...
-
C言語 列挙型(enum型)変数について
-
テキストボックスの値を変数に...
-
Variant型で宣言してるのにEmpt...
-
[VBS]変数を定数に変換する方法...
-
python の 連鎖代入の文法
-
エラーの意味は? Lvalue req...
-
jsp~jspにhiddenを使って変数...
-
processing エラーで、 "cannot...
-
整数xxxが大き過ぎますというエ...
-
プログラミングで変数と関数の...
-
構造体からレコードセットへの代入
-
コマンドプロンプト バッチ|結...
-
stdpicture型の変数に、、
-
無名関数のメリットがよくわか...
-
i++と++i ってどう違うのですか?
-
DataTableの値を変数に代入したい
-
Accessコンボボックスにレコー...
-
VBA 1行で複数の代入を行った...
おすすめ情報