
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を探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エラーの意味は? Lvalue req...
-
EXCEL/VBA 変数の値をクリップ...
-
jsp~jspにhiddenを使って変数...
-
VBAでダブルコーテーション入り...
-
整数xxxが大き過ぎますというエ...
-
i++と++i ってどう違うのですか?
-
stdpicture型の変数に、、
-
VBAでコマンドプロンプトの結果...
-
processing エラーで、 "cannot...
-
C言語 exitの使い方
-
VB6.0-整数と余りを求める
-
VisualStudio2022でC言語プログ...
-
Windows11のカメラで動画を撮り...
-
C#で動的にコントロールを取得...
-
フォームを開くときに、コンボ...
-
perl初心者ですが、プログラム...
-
tomcat7 web.xml のエンコード
-
excelの、ある数式内の{}の意...
-
世界のナベアツ
-
fortran:角度の範囲を限定させる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
EXCEL/VBA 変数の値をクリップ...
-
jsp~jspにhiddenを使って変数...
-
整数xxxが大き過ぎますというエ...
-
C言語 アロー演算子について質...
-
[VBS]変数を定数に変換する方法...
-
Variant型で宣言してるのにEmpt...
-
テキストボックスの値を変数に...
-
processing エラーで、 "cannot...
-
Accessコンボボックスにレコー...
-
DataTableの値を変数に代入したい
-
条件演算子 ? :
-
インクリメント演算子の前置(+...
-
プログラミングで変数と関数の...
-
gridViewの行選択解除
-
無名関数のメリットがよくわか...
-
stdpicture型の変数に、、
-
論理演算子について
-
COBOLの変数
おすすめ情報