ユーザーフォームで内容確認する際の問題解決方法

このQ&Aのポイント
  • エクセルのユーザーフォームで内容確認のmsgboxが表示され、ユーザーが移動する必要があるため、問題が発生しています。
  • そこで、msgboxの代わりにオフィスアシスタントを使用することで、ユーザーがデータの確認を行えるようにしました。
  • 今後はmsoButtonSetYesNoを使用して条件分岐を行いたいと考えていますが、その方法について詳細を教えていただけると助かります。
回答を見る
  • ベストアンサー

オフィスアシスタント yesno

saと申します 社内業務ツールを作っているのですが エクセルにおいて、ユーザーフォームで入力させて「登録」ボタンを押すと 内容確認のmsgboxが表示され、内容を確認するよう促しています ところが、ユーザーフォームもmsgboxもwindowsの画面中央に表示されるのでmsgboxを毎回移動させてユーザーフォームをみなければなりません そこでmsgboxをやめて、msgboxの内容をオフィスアシスタント(イルカを使用) に表示させたました With Assistant.NewBalloon Assistant.Filename = "Dolphin.acs" .Heading = "入力データ確認" .Text = "入力データは正しいですか?" & Chr(13) _ & "請求台帳にデータを追加します" .Animation = msoAnimationGreeting .Button = msoButtonSetYesNo .Show End With ここからmsoButtonSetYesNoで条件分岐する方法がわかりません IF msoButtonSetYesNo = yes Then のような動きをしたいのですが頓挫してしまいました。どなたかご支援していただけませんか。 

質問者が選んだベストアンサー

  • ベストアンサー
  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.1

ヘルプを見ましょうね。 .Showの戻り値が、選択したボタンのタイプになります。 ですから If msoBalloonButtonYes = .Show Then  ' 「はい」の場合 End If というような感じになるかと思います。 ※MsgBoxの場合はどうやってたんでしょうか? 笑 Balloon コントロールを使用する http://msdn.microsoft.com/ja-jp/library/cc376937.aspx

sadacchi12
質問者

お礼

早速の回答ありがとうございました 教えていただいた Microsoft Office 2000/Visual Basic プログラマーズ ガイドの 「Balloon コントロールを使用する」を参考に以下のマクロで動きました ありがとうございました With Assistant.NewBalloon Assistant.Filename = "Dolphin.acs" '.Button = msoButtonSetNone .Heading = "登録データ確認" .Text = "入力データは正しいですか?" & Chr(13) _ & "請求台帳にデータを登録しますか?" .Labels(1).Text = "はい" .Labels(2).Text = "いいえ" ' バルーンを表示します。 intRetVal = .Show ' ユーザーの選択を保存します。 If intRetVal = 1 Then Range("A18").Select Else Exit Sub End If End With

関連するQ&A

  • Office アシスタントの表示をVBAで制御する方法について

    Office アシスタントの表示方法について質問させていただきたいことがあります。 エクセルを開き、 Sub Test1() Assistant.Visible = True With Assistant.NewBalloon .Heading = "ようこそ" intRetVal = .Show  End With End Sub これでアシスタントを表示させたのですが、 このとき、VBAのユーザーフォームをVbModelessで開くのと同じように、 アシスタントのヘッダーやリストを表示させたまま、エクセルのシートを操作することは可能なのでしょうか? intRetVal = .Show VbModeless では当然コンパイルエラーになってしまいます。 アシスタントの制御は詳しく解説してあるものがなく、出来るのか出来ないのかを含めて調べてもよくわかりませんでした。 ご存知の方がおられましたら、よろしくご教示ください。

  • 設定アシスタントがない

    iBook G4を使用していましたが、Mac Bookを購入したのでデータを移行しようと思い、設定アシスタントを探したのですがユーティリティの中にはありませんでした。現在OSX10.3.9です。設定アシスタントだけどこかからかダウンロードなりすることはできるでしょうか。Mac Bookから移行アシスタントをコピーしてみたのですが、OSが合わないのか使えないようです。 もともとG4には設定アシスタントがあるような話を聞いたことがあるのですが、OSのバージョンなどによるのでしょうか。 それとも、そもそも買い替える原因になったのが、近頃iBook G4の調子が悪く、Nortonで調べたところ「HDに重大な問題がある」「データが極度に断片化している」とのことだったので(NortonのCDから起動ができなかったので修復プログラムは使えませんでした。)、それらのことが設定アシスタントが見つからないことと関係あるのでしょうか。 また、不調に陥ってからのことですが、誤ってホームフォルダの名前を書き換えてしまい、ユーザー設定等が白紙に戻ってしまったこともあるのですが(今はほとんど取り戻せたと思います。)、そのことも影響があるのでしょうか。 なんだかごちゃごちゃした内容になってしまいましたが、何かアドバイスが頂ければと思います。 よろしくお願いします。

    • ベストアンサー
    • Mac
  • EXCEL VBA----ユーザーフォーム 入力もれ防止

    ユーザーフォームで入力画面を作成し 項目入力後、実行ボタンでEXCELファイルにデーターを転記 →ユーザーフォームの全表示データを空白にする。 →終了ボタンで、ユーザーフォームを閉じる と言う処理で ユーザーフォームに入力段階で、必須項目に入力(選択)漏れがあると メッセージを表示させて入力を促したいのですが Private Sub Combobox19_Exit(ByVal Cancel As MSForms.ReturnBoolean) If Combobox19 = "" Then msgbox "処理区分を選択して下さい。" Cancel=True End If 上記のようにすると、最後に終了ボタンを押した時にも メッセージが出てしまいます。 Exitを Keydownにすると、うまく行ったのですが メッセージ表示後、Combobox19にフォーカスしたいのですが 次のboxにフォーカスしてしまいます...。 何か良い方法がありましたら、お教え下さいませ。 わかりづらいかもしれませんが、よろしくお願いします。

  • ユーザーフォームのデータをそのまま保存する方法

    エクセルでユーザーフォームを作成し、エクセルのワークシート上のボタンからユーザーフォームを表示するようにしました。 ワークシート上のボタンをクリックして表示されたユーザーフォームにデータを入力してユーザーフォームを終了しワークシートを保存終了、再度そのワークシートを開いてボタンからユーザーフォームを表示すると入力したデータが消えてしまいます。 ユーザーフォームに入力したデータがそのまま保存できて次に開いたときにデータが残っている方法はありませんか? 今回、ユーザーフォームを作成をした目的は、ユーザーフォームに入力したデータを元に住所録等を作成するためではありません。ですからユーザーフォームに入力したデータはワークシートと連動させていません。 やりたいことは、ワークシート上に氏名一覧があり、個々の氏名欄にボタンを作成して、その人のデータ一覧をユーザーフォームで表示させるということです。 ユーザーフォームは、人数分を作成する予定です。

  • ExcelVBAでメーラー本文へデータを送る場合

    エクセルで日報入力をフォームで入力し、フォーム上にあるデータをシートへ移行させるのと同時にデータ内容を管理者へメール送信しようとしているのですが、項目は3つその項目ごとに内容があります。 メーラーの本文中にデータを送った際に 項目1 1の内容 項目2 2の内容 項目3 3の内容 という感じで改行させたいのですが、改行せずだらだらと連続した状態になってしまいます。 項目名はLabel1~3 内容はTextBox1~3まであります。 別のLabelへ試しに Label4.caption=Label1.caption &Chr(13)& TextBox1.Text &Chr(13)& ... としてみると、Label4では改行できております。 この&Chr(13)& はマクロ上での改行処理なのでメーラーには対応しないのはわかるのですが、これに代わる記述があれば教えていただきたいのです。 また、他の方法で改行情報も持っていけることができるのであれば、ご教授よろしくお願いいたします。

  • 【ExcelVBA】ユーザフォーム初期化時にリストボックスのサイズを変更したい

    お世話になります。 ExcelのVBAを利用してマクロを作成しているのですが、ユーザフォームにリストボックスを設定し、任意の高さを調節したいと思っております。 ユーザフォームツールで、ユーザフォーム(UserForm1)を作成し、その中にリストボックス(ListBox1)を設定しました。 下記のコードはサンプルですが、なぜかリストボックスの高さが調整されないのです。。 コードが間違っているのでしょうか? 詳しい方、ご指導お願いします。。。 Private Sub UserForm_Initialize()  With UserForm1.ListBox1   .AddItem "テスト1"   .AddItem "テスト2"   .Height = 50  End With  'リストボックスの高さを表示する  Msgbox UserFrom1.ListBox1.Height End Sub ※Msgboxでは"50"と表示されず、ユーザフォームツールで設定した高さが表示されてしまいます。。

  • エクセルVBAのBalloonが表示されない

    Excel97では表示されていましたがExcel2000では表示されません。コードは、 Public Sub バルーン() With Assistant.NewBalloon .Heading = "地域別売り上げデータ" .Text = "地域を 1 つまたは複数選択してください。" For i = 1 To 3 .CheckBoxes(i).Text = "地域 " & i Next .Show End With End Sub 困っております。どなたかご教授下さい。

  • EXCEL VBA 共有ファイルと入力フォーム

    データ入力を複数人で行うため、素のデータBook Aと入力フォームを持つBook Bがあります。 Book Bを開くと自動的にBook Aを開き、入力フォームでデータをBook Aにデータを入れていくVBAを作成しています。 EXCELのフォームはそのBook上での起動でPopUP的に表示されます。(Book Bのシート表示上でフォームが表示される) ユーザーからの要望で、Dataの入力状況を確認しながら、入力したい。つまり、Book Aのデータシートを背面に表示して、その上に入力フォームを表示したい。(入力フォームは常に手前に表示したい) 同じBooK内ならデータシートをセレクトしてフォームを開けばいいのですが、このような場合には、どうしたらいいでしょうか? お知恵をお貸しください。

  • VBAでユーザーフォームのcaption表示

    VBAを初めたばかりです。 VBAでユーザーフォームを作成したのですが ユーザーフォームプロパティのcaptionで入力しても 下記プログラムで入力しても表示されません。 VBA作成時の画面にはしっかりと「項目」と 表示されていますが、プログラムを実行してユーザーフォームを 呼び出すと何も表示されていません。 ご教授ください。 Private Sub UserForm_Initialize() UserForm1.Caption = "項目" With ListBox1 .AddItem "1" .AddItem "2" End With End Sub

  • EXCELのフォーム上でリアルタイムな曖昧検索を行いたい

    ユーザーフォーム上でのVBAを教えて頂きたく思い、投稿致します。 現在、特定のセルをダブルクリックしユーザーフォームを呼び出し 指定範囲からデータを取得し、リストボックス上に表示させる。 Private Sub UserForm_Activate() With Worksheets("データシート").Range("A1").CurrentRegion Me.ListBox1.RowSource = .Resize(.Rows.Count - 1 _ ).Offset(2, 0).Address(external:=True) End With End Sub という物を利用し、フォーム上で決定された値を、特定セルに戻す (入力する)という作業を行っているのですが、 フォーム上での数値決定を、あいまい検索かつ、リアルタイムに 変動するように出来ないでしょうか? 下記のような流れをイメージしております。 1.テキストボックスに検索内容を入力(対象は指定範囲) 2.入力された文字に応じて、リストボックスのデータを変動させる。 3.数値を決定しセルに反映。 2.のデータ変動ですが、以下のようなデータがあった場合、 1.AABBCC 2.AABCCD 3.AACCDD 入力値[AA] =1,2,3 入力値[AAB] =1,2 入力値[AABB]=1 という表示が、入力した瞬間に返ってくるような物は可能でしょうか? 2を色々調べたのですが、これだ!という物に出会えませんでしたので ご教授お願い致します。

専門家に質問してみよう