• 締切済み

エクセルVBAでユーザーフォームのコマンドボタンをクリックするたびに

社内アンケートを作っています。質問は80問あり、1問ごとにユーザーフォームが表示されます。ユーザーフォームには「次へ進む」のコマンドボタンと質問内容を表示させるテキストボックスがあり、1問目を答えて「次へ進む」をクリックすると2問目の質問が表示され、さらに「次へ進む」をクリックすると3問目が表示されるという風にしたいのですが、2問目以降の質問を表示させられません。うまく表示させるにはどういうコードにすればよいのでしょうか?

みんなの回答

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3
miho_feb5
質問者

お礼

ありがとうございました!

回答No.2

やり方は色々あると思いますが、肝心の回答結果などをどうするのかが分かりません。 次へで次の質問を出すのは簡単ですが、回答をどう管理したいのか等がわかりません。集計したりするんでしょうから重要だと思います。 結果をどこかのシート等に保存していかないと回答してエクセルを終了したら回答結果はどこにも残らないし。また1人に1ファイル配ってやらせるのか共有フォルダに置いておいてやらせるのかなどによっても変わってくるだろうし。

miho_feb5
質問者

補足

説明不足でした。質問番号と回答結果はシートに入力・保存しています。1人に1ファイル配る予定です。 これまではペーパーものをOCRで読み取っていましたが、こっちのほうが確実で集計作業早くない?という意見が出たもので、、、。

noname#102340
noname#102340
回答No.1

回答形式が不明なのでオプションボタンを2つ配置しYes,Noの二択で答えるということにしました。参考までに。 使用コントロール TextBox1 cmdSusumu optYes optNo 'コードここから Dim Question(80) As String Dim QNo As Long Private Sub UserForm_Initialize() Question(1) = "1ですか?" Question(2) = "2ですか?" Question(3) = "3ですか?" '  : Question(80) = "80ですか?" QNo = 1 TextBox1.Text = Question(QNo) End Sub '次へ進むボタン Private Sub cmdSusumu_Click() If optYes Or optNo Then  '回答しないと進めない If optYes Then 'yesを記録 optYes.Value = False Else 'noを記録 optNo.Value = False End If If QNo < 80 Then  '次の問題の表示 QNo = QNo + 1 TextBox1.Text = "" TextBox1.Text = Question(QNo) End If End If End Sub

miho_feb5
質問者

お礼

ありがとうございました! オプションボタンはラジオボタンのことでしょうか?説明不足でしたが回答はラジオボタンで5段階評価、回答結果はシートに入力・保存しています。 変数の宣言に対して苦手意識を持っているので、Dim i As ~とかってなるとそれだけでため息出ちゃいます。

関連するQ&A

  • エクセル ユーザーフォーム

    エクセルのユーザーフォームでコマンドボタンを使ってテンキーを作りたいのですが、入力するときにテキストボックス1、テキストボックス2の切り替え方がわからなく困っています。 2つのテキストボックスに対応させるにはどのようにコードを書いたら良いでしょうか。 よろしくお願いします。

  • ユーザーフォームのスクロールについて(エクセル2000VBA)

    お世話になります。 上下に長いユーザーフォームを作成し、スクロールして使っています。 1~4まで項目があり、ボタンをクリックするとその項目の先頭まで自動的にスクロールするような仕組みを作りたいのですがどうしたらよいでしょうか? Private Sub CommandButton1_Click()  TextBox1.SetFocus  '項目の先頭にあるテキストボックスに移動する End Sub という風なコードはできたのですが、ボタンの位置よりテキストボックスが下にあると、フォーカスしたテキストボックスがユーザーフォームの一番下に表示されてしまいます。 また、上方向にいく時も、テキストボックスの1行上に配置してあるタイトル(ラベルで作成しました)が表示されないので少し不便な気がします。 例えば、FAQサイトによくあるような、目次をクリックするとその項目が一番上に表示され、「Top」をクリックしてページ先頭にジャンプするような感じにしたいのですが…。 よろしくお願いします。

  • エクセル コマンドボタン

    1)Sheet1でコマンドボタンを作成。クリックするとフォームが表示さ  れます。そのフォームの中のテクストボックスに数字を入れ、それ  をSheet2のB2に挿入したいです。どうすればいいのですか? 2)Sheet2にコマンドボタンを作りました。Sheet2へ戻るようなボタン  を作りたいのですがどうすれば良いですか? 以上2つの質問です。是非教えてください。

  • エクセルVBA ユーザーフォームのボタン

    ユーザーフォームにCommandButton1があります ワークシートにもCommandButton2があります ユーザーフォーム上のCommandButton1をクリックすることで、ワークシート上のCommandButton2をクリックするという命令は作れるのでしょうか? ワークシート上のCommandButton2をクリックした後の命令は出来ているのですが、そのコードをコピーしてユーザーフォーム上のCommandButton1のコードにコピーするしかないのでしょうか? 実行ボタン(CommandButton2)をワークシートに作成したので、 ユーザーフォームで入力→ ユーザーフォーム上のボタン(CommandButton1)をクリック→ ユーザーフォームは終了→ ワークシート上の実行ボタン(CommandButton2)をクリック してくれると良いかと思いました よろしくお願いします

  • 【VBA】ユーザーフォームでvbYesNo

    VBA ユーザーフォームのコマンドボタンで「はい」「いいえ」を作成し、ダイアログボックスのvbYesNoと同等の事をしたいのですが、どうすればよろしいでしょうか? コマンドボタンを押すと「0」か「1」が返ってくるようにしたのですが、ユーザーフォームだけ表示され、回答を待たず次へ進んでしまいます。 ダイアログボックスのように選択の回答待ちのような状態にするにはどうすればよいかご教授おねがいします。

  • エクセルのユーザーフォームについて

    パスワード入力用のしかけです。 ワークシートに配置したコマンドボタンを押してユーザーフォームを呼び出します。 Private Sub CommandButton1_Click() UserForm1.Show End Sub ユーザーフォームにはテキストボックスとコマンドボタンを配置しております。 テキストボックスのPasswordCharには * を設定しました。 Private Sub CommandButton1_Click() If StrConv(TextBox1.Text, vbLowerCase) = "abcd" Then MsgBox "OK!" Unload Me Else TextBox1.Text = "" TextBox1.SetFocus End If End Sub これで、ABCDまたはabcdと入力され、ユーザーフォーム上のコマンドボタンをクリックすれば、ユーザーフォームは消えます。 でも、いちいちマウスでクリックするのが面倒なのでEnterキー1回でユーザーフォームを消したいのです。 今でも、一度Enterキーを押すと、ボタンにフォーカスが移動するので、さらにEnterで消えますが、二度ではなくEnterキー1回でユーザーフォームを消すにはどうすればよいのでしょうか? ユーザーフォームは使ったことがないのでわかりません。 よろしくお願いします。

  • VBAのユーザーフォーム・・

    教えてください。 ユーザーフォームのテキストボックス・コンボボックスに入力した文字列をコマンドボタンを押したら、セルC1・B1に反映させたいのですが、できません。 このコマンドボタンには他のプログラムも入っており、同時にプログラムを実行したいのですが。

  • EXCEL VBAのユーザーフォームの操作方法について教えていただきたいことがあります

    EXCEL VBAのユーザーフォームの操作方法について教えていただきたいことがあります。 (1)ユーザーフォームにテキストボックスを2つ作る (2)コマンドボタンを1つ作る。 この場合に、コマンドボタンを押すと、セットフォーカスされている方のテキストボックスに「新春」と表示させることはできるのでしょうか。 キーボードは当然セットフォーカスされているテキストボックスに入力されますが それと同じ機能をコマンドボタンにも持たせたいのです。 Private Sub CommandButton1_Click() で TextBox1がセットフォーカスされているならTextBox1に"新春"と入力する TextBox2がセットフォーカスされているならTextBox2に"新春"と入力する というような条件式になるのでしょうか。 色々調べましたが答えが見当たりません。 よろしくお願いいたします。

  • ユーザーフォームで教えてください。

    ユーザーフォームで教えてください。 エクセルシートで、A列に1から100までナンバーがあり、 B列~E列までデータが入っている表があります。 テキストボックスにナンバーを入力(もしくはスピンボタン)して 「検索」のコマンドボタンを押すと、B列以降のデータが各テキストボックスに表示される。 という形にしたいのですが、やり方が分からず困っています。 これまでは表の外に最初の行と最後の行を表示させて、 それを変数として扱い、「前」、「次」のコマンドボタンで1ずつ増減させて 表示していたのですが、ナンバーから直接表示させたほうが効率が良いと思いました。 (データが少ないときはよかったのですが。) 希望としては、 例としてテキストボックス1に「50」と入力する。(またはスピンボタンで50を選択) コマンドボタン「検索」でナンバー50のB列~E列のデータをテキストボックス2~5へ表示。 コマンドボタン「前」「次」を配置し、「前」でナンバー49、「次」でナンバー51のデータを表示。 1もしくは100(最後のナンバー)のときに「前」「次」を押してもデータは表示せず、 メッセージで「これが最初(最後)です」と表示。 という感じです。 できればでいいのですが、 ナンバー50のデータが表示された状態で、 B列以降のデータを直してナンバー50の行に上書きする「修正」、 表示された行を削除して1行上にずらす「削除」の コマンドボタンがあると助かります。 長くなってしまいましたが、よろしくお願いします。

  • エクセルのユーザーフォームについて

    エクセルマクロのユーザーフォームのテキストボックスに セルの値を表示する方法で質問です。 ユーザーフォームを表示するとその時点での セルの値はテキストボックスに表示されているのですが ユーザーフォームを表示したまま 別のブックのセルを選んだ際に そのセルの内容がテキストボックスに表示されるようにしたいです。 ボタンや、なにかをするわけではなく 自分で任意のセルを選択したら、という事です。 ユーザーフォームには selectionchange などがないのでどうすれば良いかわかりません。 宜しくお願いします。

専門家に質問してみよう