- ベストアンサー
VBでのGOTO文はできますか?
教えてください。 例えば) もしA1セルが-1だったら、選択1へ飛び、黄色をつける。 0だったら、選択2へ飛び、赤色をつける。 1だったら、選択3へ飛び、青色をつける。 と選択肢が選択1・選択2・選択3と3つあった場合、それぞれにGOTO文で飛ばしたいのですが、可能でしょうか? よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
GOTO文とCASE文利用を挙げます。 (GOTO文利用) Sub test01() i = 10 If Cells(i, 1) = -1 Then GoTo a1 If Cells(i, 1) = 0 Then GoTo a2 If Cells(i, 1) = 1 Then GoTo a3 GoTo a4 a1: Cells(i, 1).Interior.ColorIndex = 6 MsgBox "-1" & "でした" Exit Sub a2: Cells(i, 1).Interior.ColorIndex = 3 MsgBox "0" & "でした" Exit Sub a3: Cells(i, 1).Interior.ColorIndex = 5 MsgBox "1" & "でした" Exit Sub a4: End Sub '-------(CASE文利用) Sub test02() i = 10 Select Case Cells(i, 1) Case -1 Cells(i, 1).Interior.ColorIndex = 6 MsgBox "-1" & "でした" Case 0 Cells(i, 1).Interior.ColorIndex = 3 MsgBox "0" & "でした" Case 1 Cells(i, 1).Interior.ColorIndex = 5 MsgBox "1" & "でした" Case Else End Select End Sub 選択肢1,2,3ルーチンはCoLorIndexの次の行にいれてください。 沢山セルがある場合はiをFor i=1 to 30 とかで繰り返してください。
その他の回答 (5)
- miz-fuyu
- ベストアンサー率8% (1/12)
No4の回答訂正。 ごめんなさい。 SwitchじゃなくてSelect Caseですね。
- miz-fuyu
- ベストアンサー率8% (1/12)
GOTO文を使った場合はこうなりますが…先の方の回答のとおり使用はあまりオススメは出来ません。 現在のVisualBasicは構造化記法で記述することが一般的でありこれらから外れるGoto文やGoSub文はソースの複雑化を招くためあまり使用しません。 先の方の言われるとおりIFやSwitchのみで記述するほうが良いと思います。 Public Sub main() If Cells(1, 1) = -1 Then GoTo Yellow_Exe ElseIf Cells(1, 1) = 0 Then GoTo Red_Exe ElseIf Cells(1, 1) = 1 Then GoTo Blue_Exe End If Exit Sub Yellow_Exe: '黄色色づけ処理の記入 Exit Sub Red_Exe: '赤色色づけ処理の記入 Exit Sub Blue_Exe: '青色色づけ処理の記入 Exit Sub End Sub
- -boya-
- ベストアンサー率35% (176/494)
Excelマクロ? Select Caseって使えませんかね? 例えばこんな感じ、、、 Select Case i Case 0 '黄色をつける Case 1 '赤色をつける Case 2 '青色をつける Case Else 'その他の場合の処理 End Select
- taknt
- ベストアンサー率19% (1556/7783)
可能です。ですけど、できるだけ GOTO文を使わないほうがいいですね。 っていうか、上記のたとえば、 IF文だけで すみます。
- aloop
- ベストアンサー率23% (10/43)
Excelマクロですか? ifかswitch文でできると思うのですが、だめでしょうか?
お礼
ありがとうございます。CASE文でやってみます。