- 締切済み
うまくVBが組めません
会社でエクセルを使ってデータをまとめているのですがVBのユーザーフォームで作ろうとしています。今困っていることはoptionbuttonを4個使い選択式にし、選択したら「OK」buttonを押すことで各optionbuttonに対応したsheetへ飛ぶようにしたいのですがうまくいきません。 現状ですが Private Sub CommandButton1_Click() dim str as string str=optionbutton1.caption select case str case "****" sheets("1234").select ・ ・ ・ end select End Sub としています。 根本的に違うかもしれないので指摘してください。 ちなみに3日前に始めてVBを教えてもらいました。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
3日前のVBA開始者には、技巧が2,3詰まっていて難しいかもしれないが 非常にコードが少なくなります。ボタン3つに省略。 Private Sub UserForm_Click() sn = Array("", "Sheet1", "Sheet2", "Sheet3") For i = 1 To 3 If UserForm1.Controls("Optionbutton" & i) = True Then Worksheets(sn(i)).Select End If Next i End Sub 上記はフォームのクリックで動きます。コマンドボタンで動かすなら そのボタンのクリックイベントに入れてください。 >Array("", "Sheet1", "Sheet2", "Sheet3") は実際のシート名を並べてください。ボタンと対応する順序で、実情の名前に合わせてください。 ーー 上記はオプションボタンの名前の部分が、共通の名称+順番の数字(1,2,3...半角)とつけてある場合の例です。そうすることで、擬似コントロール配列を使えます。VBのコントロールを参考までに「教えてもらった先生」に聞いてください。 Optionbutton"ー>別の名前、にしたなら"Optionbutton" の部分を変えてください。 ーーー >VBが組めません 内容的に、VBAの課題です。VBと(エクセル)VBAと、その違いも、「教えてもらった先生」に聞いてください。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 まず、質問に書かれたコードの意味は分かるけれども、入門レベルでは、まだ、書かないほうがよいかもしれませんね。ワークシートから値を取るなどのコードを学んでからのほうが良いです。いきなり、UserForm では、少し、難しいです。UserForm は、イベントということを学ばなくてはなりません。また、いきなり実務に利用しようとすると、挫折してしまうかもしれません。 ボタンで行う方法。 Private Sub CommandButton1_Click() For i = 1 To 4 If Controls("OptionButton" & i) Then Worksheets("Sheet" & i).Select End If Next i End Sub Worksheets(i).Select (この場合は、Sheets(i) は、使わないほうがよいです。) Index で取る方法もあります。通常、OptionButton は、ひとつしか、True になりません。また、コード上では、True は、省略します。 もし、基本を言うのであれば、 Private Sub OptionButton1_Click() If OptionButton1 Then Worksheets("Sheet1").Select End If End Sub Private Sub OptionButton2_Click() If OptionButton2 Then Worksheets("Sheet2").Select End If End Sub Private Sub OptionButton3_Click() If OptionButton3 Then Worksheets("Sheet3").Select End If End Sub Private Sub OptionButton4_Click() If OptionButton4 Then Worksheets("Sheet4").Select End If End Sub このように書きます。OptionButton を選択したら、ワークシートを選択できます。時々、初心者の方で、面倒くさいという人がいますが、コピペで書き換えていきます。
- hige_082
- ベストアンサー率50% (379/747)
本やWEBでもう少し勉強しては 初歩の初歩ですよ --------------------------------------------------- Private Sub CommandButton1_Click() If OptionButton1.Value = True Then sheets("1234").select If OptionButton2.Value = True Then sheets("2345").select If OptionButton3.Value = True Then sheets("3456").select If OptionButton4.Value = True Then sheets("4567").select End Sub ----------------------------------------------------- のように普通はcaptionの値ではなく、Valueで選択されているか、いないかを求めます