
No.1ベストアンサー
- 回答日時:
制御構造とは関係なく、VBでは「:」は、「複数の行を1行にまとめて書く」為の記号です。
ですから、
--------------------------------
If OPTO104(1).Value = True Then
OPTO104(1).SetFocus
Else: OPTO104(2).SetFocus
End If
--------------------------------
は、
--------------------------------
If OPTO104(1).Value = True Then
OPTO104(1).SetFocus
Else
OPTO104(2).SetFocus
End If
--------------------------------
と、同じ意味ですし、
例えば、
-------------------------------
A=1
B=2
-------------------------------
を
-------------------------------
A=1:B=2
-------------------------------
と書くこともできます。
No.4
- 回答日時:
VB,VBAの解説書では、Else:の書き方は見かけません。
Else
OPTO104(2).SetFocus
EndIf
と書かれています。
:は別のステートメントを同一行に書くための行節約のための用途や
同一行に書いて関連がわかりやすいように使います。
個々で前のステートメント(文)が終わり、次に新しいステートメンとが始まることを意味します。この意味では改行と同じです。
しかし:が改行の意味があるわけではないと思います。
どういうコードの塊が1ステートメントか結構難しい。
他に継続行のスペース+アンダーバーがあります。これは行が増えます。
Case Else: MsgBox "C" などでも使えるようです。
Sub test06()
x = InputBox("x=")
If x = 1 Then
x = 1
Else
x = 2
End If
MsgBox x
End Sub
が標準の記法と思いますが(インデントの点は考えないとして)
下の行の内容を、同行に持ってきたり、:を入れたりして実行してみると、If Then Else EndIfの行位置関係は、意外にルール性の発見は難しいと思いました。
質問のケース以外の自由度はないようです。
標準の記法をお勧めします。
No.3
- 回答日時:
If A = 1 Then B = 2: C = 3 Else B = 3: C = 2
If文を上記の様に1行ですませる事も可能ですし
For I = 0: A[I] = I * 2: Next I
↑の様に複数行を':'でつないで1行で記述する事も可能です。
質問の例では
Else: OPTO104(2).SetFocus
でも
Else OPTO104(2).SetFocus
の様に':'が無くても問題ありません。
#':'をわざわざ付ける意味が無い....
通常はソースが読みづらくなるので':'を使って1行に
する事は推奨されていません。
If A = 1 Then
B = 2 'コメント1
C = 3 'コメント2
Else
B = 3 'コメント3
C = 2 'コメント4
End if
No.2
- 回答日時:
まず前提知識として、VBというかMS Basic構文では、1行1ステートメントだという事を押さえておいていただきたい。
ここで言うステートメントとは
・IF hogehoge THEN ' 1ステートメント
・FOR i = 1 TO 50 STEP 2 ' 1ステートメント
・ELSE ' 1ステートメント
・A = B ' 1ステートメント
などの事を指す。
これらを、普通は複数行に分割して書く事はできないし、逆に1行に複数ステートメントを書く事はできない。割と縛りの多い構文規則だ。
で、VBでは、ステートメントを複数行に分ける場合に「_と改行のペア」を用い、逆に1行に複数ステートメントを記述する場合に「:」を用いる。
質問者のソースでは、ELSEというステートメントとOPTO104(2).SetFocusというステートメントを1行で書くために「:」を入れているという訳ですな。
直球の回答という訳ではないが、以上の内容をご一読いただけたら。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript プログラムがうまく動きませんレビューお願いします 1 2022/07/10 05:08
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) VBAで “:” を含むセルの特定 2 2023/05/11 16:30
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
このQ&Aを見た人はこんなQ&Aも見ています
-
文字列の比較
Visual Basic(VBA)
-
Accessクエリーで両方のテーブルの全てのデータを表示することは可能ですか?
Access(アクセス)
-
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
-
4
Select Case文でこのようなことは可能でしょうか?
Visual Basic(VBA)
-
5
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
6
VBA: Select Caseを短くしたい
Visual Basic(VBA)
-
7
For ~ Next の中での Dim宣言について
Visual Basic(VBA)
-
8
エクセルのVBAの標準モジュールの名前が文字化けしてしまうのですが。。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Hタグを改行禁止にしてspanのよ...
-
テキストエリア内の改行もその...
-
高校1年生情報の問題について。
-
XMLを作成してもタグしか表示さ...
-
AirTag(エアタグ)やその他GPS...
-
ZARAの商品のタグの外しかた
-
Python 3.12.2 か一番最新のパ...
-
AfterEffectsでイージーイーズ...
-
VC、コンソールアプリ結果の...
-
キーフレーム
-
隠しリンク、裏ページ、等を見...
-
携帯専用ホームページ
-
教えてください
-
ツールチップの表示時間の調整
-
HTMLでリンク先を新しいタブで...
-
cssリファレンスについて
-
リンク先のURLを非表示にし...
-
(再投稿) Word VBA マクロ スペ...
-
GoogleChromeでレイアウトが左...
-
ブラウザから直接HTMLを取得す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
H1タグに改行の<br>を使う
-
Hタグを改行禁止にしてspanのよ...
-
改行できる・できない入力ボッ...
-
\\n \\r \\t について
-
テーブルの幅を固定するとnowra...
-
「:」について
-
span要素にのみwhite-space: no...
-
VBE でスペースと改行を見える...
-
XMLの改行方法とリンクの仕方
-
長いURLを途中で改行(折り返す...
-
テーブルのセルデータを自動改...
-
文字の最後に半角空白が勝手に...
-
テキストエリア内の改行もその...
-
テキストエリア内の改行禁止
-
preタグがプロの現場であまり使...
-
高校1年生情報の問題について。
-
ddの行の折り返しをしたいです...
-
<br style="clear:both;">って...
-
Dreamweaverの改行コードをLFに...
-
PCの画面を縮小したらサイズ...
おすすめ情報