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行で書くために「:」を入れているという訳ですな。
直球の回答という訳ではないが、以上の内容をご一読いただけたら。
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
-------------------------------
と書くこともできます。
お探しの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も見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
Designer.vbは直接コードをいじってはだめ?
Visual Basic(VBA)
-
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
ある条件の最大値+1を初番するにはロックが必要ですか?
MySQL
-
-
4
CloseとDisposeの違い
Visual Basic(VBA)
-
5
メッセージボックスを前面に表示させるには?
Visual Basic(VBA)
-
6
VBの「As String * 128」とは?
Visual Basic(VBA)
-
7
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
8
private subモジュールを他のモジュールから呼び出して使う方法を教えてください(-.-)
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カーソルを合わせると説明を表...
-
preタグがプロの現場であまり使...
-
改行できる・できない入力ボッ...
-
テキストエリア内の改行禁止
-
\\n \\r \\t について
-
<h1>を使っても無改行にするには
-
Hタグを改行禁止にしてspanのよ...
-
VBE でスペースと改行を見える...
-
テーブルの中にスペースを入れたい
-
ブラウザでのタイ語の改行について
-
H1タグに改行の<br>を使う
-
テーブルの幅を固定するとnowra...
-
XMLの改行方法とリンクの仕方
-
Windowsのformでtextareaに入力...
-
htmlで文字列をクリップボード...
-
ddの行の折り返しをしたいです...
-
textareaを非表示
-
liタグの自動改行をやめたい!
-
『タグの無効化』は、どちらが...
-
HTMLの改行コードが分かりません。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テーブルのセルデータを自動改...
-
テキストエリア内の改行禁止
-
長いURLを途中で改行(折り返す...
-
H1タグに改行の<br>を使う
-
\\n \\r \\t について
-
テーブルの幅を固定するとnowra...
-
テーブル内の文字列を改行させたい
-
<TD><input type="text"></TD>...
-
「:」について
-
PCの画面を縮小したらサイズ...
-
preタグがプロの現場であまり使...
-
改行できる・できない入力ボッ...
-
Windowsのformでtextareaに入力...
-
文字の最後に半角空白が勝手に...
-
XMLの改行方法とリンクの仕方
-
テキストエリア内の改行もその...
-
<br />タグの、brの後の半角ス...
-
htmlで文字列をクリップボード...
-
Hタグを改行禁止にしてspanのよ...
-
VBE でスペースと改行を見える...
おすすめ情報