[[20171205134111]] 『VBA シート名を変数にしたい』(ここ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBA シート名を変数にしたい』(ここ)

VBAのユーザーフォームを使って二択の問題を出題するシステムを作っています。

そこで科目を選ぶ画面と問題を出題する画面を作っており、科目を選ぶボタンを押すと、その科目に対応したシート名の数字を当てて次の問題画面でその科目の問題を出題するようにシートを変えたいと思っています。

科目を選ぶボタンを押すと

Public Sub CommandButton1_Click()
s = 1
Me.Hide
問題0.Show
End Sub

sをシートの番号として、現在の画面を閉じ、次の画面を表示するようにしています。

問題を表示する画面では

Public Sub setQuizData()

LastRow = Cells(Rows.Count, 1).End(xlUp).Row
rowNo = Int((LastRow - 1 + 1) * Rnd + 1)
Set ws = Worksheets("Sheet" & i)

quizText.Text = ws.Cells(rowNo, 2)

シートごとに、1行目に問題番号、2行目に問題、3行目に答えを入力し、rowNoで問題番号をランダムに選ぶようにしています。
ユーザーフォームのテキストボックスにその選んだ問題を表示するために、科目に対応したシートを選びたいのですが、「インデックスが有効範囲にありません」とエラーが出てしまいます。

コードにこだわりはないので、より良いものがありましたら教えていただければ幸いです。
よろしくお願い致します。

< 使用 Excel:Excel2013、使用 OS:Windows10 >


Set ws = Worksheets("Sheet" & s) です。
(ここ) 2017/12/05(火) 14:01

sの変数宣言はどこにありますか? どこにも宣言していないなら、それは各々のプロシジャ内の、別々の変数になります。
共通の1つの変数にしたいのならば、標準モジュールで Public宣言してみてください。
 Public S As String
(???) 2017/12/05(火) 14:20

標準モジュールで宣言してみましたがうまくいきませんでした...

(ここ) 2017/12/06(水) 15:52


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.