
プログラム内容
4たくの問題を乱数で出す(テスト用のPGのため数字にしていますが、実際は文字が入ります)
Private Sub Form_Load()
Dim Total As Integer
Dim mo() As String
Dim se_a() As String
Dim se_i() As String
Dim se_u() As String
Dim se_e() As String
Dim ka() As String
Dim kai() As String
Total = 3
ReDim mo(Total) As String
ReDim se_a(Total) As String
ReDim se_i(Total) As String
ReDim se_u(Total) As String
ReDim se_e(Total) As String
ReDim ka(Total) As String
ReDim kai(Total) As String
'-----------------------
mo(1) = "1 + 1"
mo(2) = " 2 + 2"
mo(3) = " 3 + 3"
'-----------------------------
se_a(1) = "2"
se_a(2) = " 2"
se_a(3) = " 2"
se_i(1) = "3"
se_i(2) = "3"
se_i(3) = "3"
se_u(1) = "4"
se_u(2) = "4"
se_u(3) = "6"
se_e(1) = "7"
se_e(2) = "5"
se_e(3) = "9"
'--------------------------
ka(1) = "ア"
ka(2) = "ウ"
ka(3) = "ウ"
kai(1) = "a"
kai(2) = "s"
kai(3) = "s"
'-----------
End Sub
Private Sub kotae_Click()
kaitou.Visible = True
End Sub
Private Sub next_Click()
Dim i As Integer
kaitou.Visible = False
i = Int(Rnd * Total) + 1
NO.Text = i
MONDAI.Text = mo(i)
select_a.Text = se_a(i)
select_i.Text = se_i(i)
select_u.Text = se_u(i)
select_e.Text = se_e(i)
kaitou.Text = ka(i)
End Sub
でエラーが出ます。何がおかしいのでしょうか
MONDAI.Text = mo(i)
にエラーがあるようなのですが・・・。
kai =解説
No.2
- 回答日時:
こんばんは。
mo(i) は、Form_Load() の中で宣言していますよね。
そうすると、Form_Load() のプロシージャ内でなければ使えないんです。
エラーになったところは、next_Click()というイベントプロシージャの中ですよね。
なので、m(i)は配列変数ではなく、プロシージャ(sub)かファンクションの
呼び出しと解釈されてしまったんですね。(括弧がついているから)
(ここを消しても、この後の行で同じエラーが出るはずです)
ということで、解決方法ですが、
Dimの最初の行からReDimの最後の行までの部分をsubの前に出してください。
そうすれば、他のsubやFunctionからも扱えるグローバルな変数となります。
No.1
- 回答日時:
再び、kmorです。
このような場合、どこでどういうエラーが出るかを書いておくと非常に答えやすいですよ。
お察しのとおり、おそらく
MONDAI.Text = mo(i)
でエラーになっているんでしょう。
mo()はForm_Loadの中で定義されていますね。
VBはサブルーチン、ファンクションが変われば、その中で定義されている変数は使えないのです。
対策として、全てのサブルーチン、ファンクションの外で定義すれば出来ます。
Option Explicit
Private mo() As String
Private Sub Form_Load()
ReDim mo(Total) as String
:
:
End Sub
といった感じです。
この回答への補足
ご回答ありがとうございます
はじめは奏していましたが、
total=3
というのが使えないようなのですが・・。
プロシジャーの外では無効ですと出てきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Visual Basic(VBA) VBA 変数が思うように機能しません。ご教授願います。 7 2022/08/14 13:50
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 初めてマクロを入力しますが、テキストとおりに入力したのに構文エラーです。修正を教えてください。 3 2022/10/28 11:18
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Excel(エクセル) このコードに追記事項の仕方を教えて下さい。 以下のコード内容に出てくる。セルH3が空白の場合、エラー 4 2023/08/03 00:22
- Excel(エクセル) excel2013 色付きセルの値合計 3 2023/02/28 11:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
VBAがブレークモードになっ...
-
EXCEL VBAマクロ中断でデバッグ...
-
インデックスが有効範囲にあり...
-
VB6 エラー:438 (InputBoxに値)
-
ゴールシーク関数で、エラーを...
-
ExcelVBAマクロコードの「実行...
-
DoEventsは意味ない?
-
AccessVBAでExcelを起動し、罫...
-
なぜこんな初歩的なVBAのIf文で...
-
ADODB.Streamを使用してUTF-8を...
-
VBAでのエラー
-
レコードセットのループ処理で...
-
カーソルオープンでエラー(ORA...
-
チェックボックスをオンにする...
-
INSERT INTOステートメント構文...
-
VBAで入力規則の設定がうまくい...
-
アプリケーション定義またはオ...
-
エクセル2000で動いたマクロが2...
-
なぜエラーになるのでしょうか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAがブレークモードになっ...
-
実行時エラー -'-2147417848
-
ExcelVBA Range クラスの Page...
-
マクロについて教えてください...
-
VBAでのエラー
-
【Excel VBA】マクロをボタンに...
-
実行時エラー48発生時のDLL特定...
-
EXCEL VBAマクロ中断でデバッグ...
-
なぜエラーになるのでしょうか...
-
実行時エラー3001「引数が間違...
-
OLEDB.NETで接続できない
-
INSERT INTOステートメント構文...
-
VBAのエラー発生場所をメッセー...
-
VB6+SQL サーバー 2000 で 実行...
-
Outlook.ApplicationをCreateOb...
-
ADODB.Streamを使用してUTF-8を...
-
カーソルオープンでエラー(ORA...
-
Invalid procedure call or arg...
おすすめ情報