VBAのユーザフォームにて、複数クリックボタンを作り、クリックされたらアクティブセルを基準に文字が登録されるようにしています。
入力が一通り完了するまでユーザーフォームを立ち上げっぱなしにしたいのですが、現状ボタンを1つクリックするたびにユーザーフォームがCLOSEするので、都度ユーザーフォームを立ち上げないといけないので手間になっています。
クリックによる入力が完了するまでユーザーフォームを立ち上げたままにし、入力完了後に手動(ボタンクリックによるCLOSE等)でユーザーフォームを消したいのですが、可能でしょうか?

「VBAのユーザフォーム」の質問画像

A 回答 (2件)

こんばんは!



回答ではないのですが・・・

ユーザーフォームの作り方から考え直した方が良いと思います。
自分であれば「Frame」の中に「商品A」~「商品J」までのオプションボタンを配置し
いずれかの商品一つだけが選択できるようにします。

そしてユーザーフォームのFrameの外に「コマンドボタン」を配置し、それをクリックした段階で
シートに出力される方法にします。

「金額」に関して・・・
色々やり方はあるとおもいますが、
コマンドボタンをクリックした時のコードに記載する。
Select Case などで分岐すれば簡単に設定できるような気がします。

この程度でごめんなさい。m(_ _)m
    • good
    • 0

whileでループさせればいいじゃん

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

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

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

Aベストアンサー

回答形式が不明なのでオプションボタンを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

回答形式が不明なのでオプションボタンを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_Cl...続きを読む

QBVAユーザーフォーム上でのオプションボタンについて

BVAを3時間前から勉強しだした超初心者です。よろしくおねがいします。

エクセルVBAのユーザーフォーム上でオプションボタンをA・B・Cと3つ、コマンドボタンを1つ作成します。
A・B・Cのどれかを選択した状態でコマンドボタンをクリックしたときに、シート1のA列2行目から下に順番にデータとして、Aをクリックしたときにはa、Bをクリックしたときにはb、Cをクリックしたときにはcが入力されるようにコードを作りたいです。

今試行錯誤して作ったものは、オプションボタンをクリックした時点でシート1に入力されてしまうため困っています。

Aベストアンサー

こんなコードではどうでしょうか?
オプションボタン側にはコードはいりません。

Private Sub CommandButton1_Click()
  With Range("A65535").End(xlUp).Offset(1)
    If OptionButton1 = True Then .Value = "a"
    If OptionButton2 = True Then .Value = "b"
    If OptionButton3 = True Then .Value = "c"
  End With
  Unload Me
End Sub

QExcelVBA ユーザーフォームかコマンドボタン出現状態でシートを編集したい

ExcelでVBAを使いアプリを作っています。
何とかして、一時的にとあるボタンを表示させ、それを表示させたままでシート内容を編集できるようにしたいと思っています。
調べましたが、ボタンのみを出現させる術はわかりませんでした。できるのでしょうか。
それがダメなら、ユーザーフォームが出ている間、シートを編集可能にすることはできるでしょうか。

Aベストアンサー

こんにちは。
>ユーザーフォームが出ている間、シートを編集可能にする
UserForm1.Show vbModeless
...の事でいいのかな?
UserForm1のプロパティでShowModalをFalseに設定しても良いですが。
>ExcelでVBAを使いアプリを作っています。
>何とかして、一時的にとあるボタンを表示させ...
から考えると、オリジナルのツールバーなどで対応したほうがいいかもしれませんネ^ ^

Q【VBAユーザーフォームで閉じるボタンを表示したくない】

ユーザーフォームの右上閉じるボタン(×)を表示しない方法が見当たりません。
どなたかご存知の方、ご教授願います。

開発言語:Excel2000VBA
OS:Windows2000

Aベストアンサー

こんにちは、じゃんぬねっと です。

API 使っても消せないかなぁ。
DeleteMenu で、システムメニューから「閉じる」を消すだけですから。

QExcelVBAでユーザーフォームの閉じるボタン「×」を使用できなくする方法

VBAで、ユーザーフォームを開くと右上に「×」の閉じるボタンがありますが、これを使用できなくする方法を教えてください。

回答よろしくお願いします。

Aベストアンサー

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then Cancel = 1
End Sub


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報