
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
\\n \\r \\t について
-
長いURLを途中で改行(折り返す...
-
H1タグに改行の<br>を使う
-
高校1年生情報の問題について。
-
テキストエリア内の改行禁止
-
Title表示時間の調節は?
-
VBE でスペースと改行を見える...
-
Dream Weaverの改行時にTabキー...
-
XMLの改行方法とリンクの仕方
-
Dreamweaverの改行コードをLFに...
-
Windowsのformでtextareaに入力...
-
テーブル内で改行を防ぐには
-
<h1>を使っても無改行にするには
-
見出しを改行させることはしな...
-
PCの画面を縮小したらサイズ...
-
HTMLソースの質問
-
テーブルの幅を固定するとnowra...
-
ブラウザでのタイ語の改行について
-
metaタグ終りの/(スラッシュ)...
-
テキストエリアの幅を10桁まで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Hタグを改行禁止にしてspanのよ...
-
H1タグに改行の<br>を使う
-
Windowsのformでtextareaに入力...
-
高校1年生情報の問題について。
-
改行できる・できない入力ボッ...
-
\\n \\r \\t について
-
「:」について
-
Dream Weaverの改行時にTabキー...
-
テーブルのセルデータを自動改...
-
ブラウザでのタイ語の改行について
-
<br />タグの、brの後の半角ス...
-
preタグがプロの現場であまり使...
-
Dreamweaverの改行コードをLFに...
-
mailtoで本文に改行を入れたい
-
長いURLを途中で改行(折り返す...
-
HTML を自動で改行してくれるツ...
-
<table>の幅の設定のことでの疑問
-
画像にリンクを張るとレイアウ...
-
なぜか<p> </p>が挿入され...
-
テキストエディタで文字列を揃える
おすすめ情報