• 締切済み

うまく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を教えてもらいました。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

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)
回答No.2

こんばんは。 まず、質問に書かれたコードの意味は分かるけれども、入門レベルでは、まだ、書かないほうがよいかもしれませんね。ワークシートから値を取るなどのコードを学んでからのほうが良いです。いきなり、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)
回答No.1

本や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で選択されているか、いないかを求めます