ユーザーフォームのデータ保存方法

このQ&Aのポイント
  • 【方法】ユーザーフォームのデータをエクセルで保存するための手順
  • 【解決】ユーザーフォームに入力したデータをワークシートと連動させずに保存する方法
  • 【目的】ユーザーフォームを利用して個々のデータ一覧を表示する方法
回答を見る
  • ベストアンサー

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

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

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

  • ベストアンサー
回答No.1

こんにちは。 ふつうは、終了時に、ユーザーフォームのデータを、ワークシートに退避させるという方法を取ります。それをユーザーに感じさせないためには、多くの公開マクロを出す人たちは、そのシートを[隠しシート]にしてしまっています。 ワークシートに書き出す方法、こんなふうになります。 '// Private Sub UserForm_Initialize() With Worksheets("Sheet1")  TextBox1.Text = .Cells(1, 1).Value  TextBox2.Text = .Cells(2, 1).Value End With End Sub Private Sub UserForm_Terminate() With Worksheets("Sheet1")  .Cells(1, 1).Value = TextBox1.Text  .Cells(2, 1).Value = TextBox2.Text End With End Sub '// >ワークシート上に氏名一覧があり、個々の氏名欄にボタンを作成して、その人のデータ一覧をユーザーフォームで表示させるということです。 こういう場合は、ボタンよりも、イベント・ドリブン型マクロで、ダブルクリックや右クリックで、ユーザーフォームを出す方法が軽くなります。 >ユーザーフォームは、人数分を作成する予定です。 ただ、今の時代はどうか知りませんが、私は、ユーザーフォームの数は、作りすぎると、思わぬトラブル(クラッシュ)になることがありましたので、なるべく、ユーザーフォームの数は増やさないようにしています。 参考になれば幸いです。

y-momiji
質問者

お礼

回答ありがとうございあした。 おかげさまで、保存終了することができました。 ボタンよりも、イベント・ドリブン型マクロがいいとのこと、 出来れば、 イベント・ドリブン型マクロの作成方法を教えていただけませんでしょうか? よろしくお願いします。

その他の回答 (1)

回答No.2

こんにちは。 遅くなりました。 >イベント・ドリブン型マクロの作成方法を教えていただけませんでしょうか? 例えば、こんなふうに出来ます。 Sheet1 A列のA1から  A列  B列 (B列は、同じ行なら、どこに置いてもよい) 東京   1 大阪   2 名古屋  3 福岡   4 Sheet2  A列A1から  A列 浅草雷門 梅田スカイビル 熱田神宮 太宰府天満宮 Sheet1 のモジュール '// Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)  Dim i As Long  Cancel = True  If Target.Column <> 1 Then Exit Sub 'ダブルクリックの列が"A"列でない時  If Target.Value = "" Then Exit Sub '対象セルが空白  If IsNumeric(Cells(Target.Row, "B").Value) Then   i = Cells(Target.Row, "B").Value '"B列    With UserForm2     .Show vbModeless     .TextBox1.MultiLine = True '本来は、プロパティで処理してください。     .TextBox1.Text = Worksheets("Sheet2").Cells(i, "A").Value    End With  End If End Sub '// なーんだ、こんなものかと思われるでしょうが、 これに、インターネット(IE)を組み合わせることも可能です。 画面の都合上、あまり複雑な内容は書けませんが、 例えば、OkWaveであろうが、oshiete.gooであろうが、ここのサイトは、数値で管理されていますね。 つまり、 題名:●●●●●●● ,数字 題名と数字さえあれば、UserFormで同じようなことが可能だということが分かります。 strURL = "http://oshiete.goo.ne.jp/qa/" & i & ".html" strURL = "http://okwave.jp/qa/q" & i &".html" で、インターネットにアクセス出来ますし、ハイパーリンクなどは不要だと分かります。 なお、なぜ、ダブルクリックなのかという疑問に関しては、あまり深い意味はありませんが、ワンクリックで、何かの動作するのは、鬱陶しいからです。 それと If Target.Column <> 1 Then Exit Sub 'ダブルクリックの列が"A"列でない時 を、If Target.Column = 1 Then に換えて、 ElseIf Target.Column =3 Then のように項目を増やすことによって、 同じダブルクリックなのに、別の動作をさせることも可能になります。 余計なお世話になってしまいましたが、実は、こういうスタイルで、ここの掲示板にアクセスしています。

y-momiji
質問者

お礼

ありがとうございました。 VBAに詳しくない私には難しそうですが、がんばってみます。

関連するQ&A

  • Excelユーザーフォームでのデータ検索

    初心者の質問で申し訳ございません。 ユーザーフォームを利用して検索ボタンを作ろうと考えています。 ユーザーフォームでテキストボックスを2個と コマンドボタン1個を作成し、 テキストボックス1に検索したい氏名を入力して コマンドボタンを押すと、 ワークシート(ワークシート名、データ)に作成されたデータのD列から 一致するものを検索し、 一致したデータのA列にある「番号」をテキストボックス2、 表示する。 というマクロが書けず困っています。 よろしくお願いします。

  • ExcelVBAのユーザーフォームでデータ反映方法。

    こんにちは。 詳しい方、お知恵をお貸しください。 Excelのワークシートに保持しているデータを ユーザーフォームのTextBoxに反映させたいのですが どのようにすればよろしいのでしょうか? ◎条件は以下のとおりです。 1.ユーザーフォームを表示させた時、TextBox(s1)にワークシート(ini) のセル(B1)を反映させる。 2.ユーザーフォーム上で編集可能な状態とし、OKボタン押下で TextBox(s1)のデータをワークシート(ini)のセル(B1)に反映・保存。 また、別ユーザーフォームで参照のみ可能な物を作っておりますが、 編集不可能な状態で表示させる方法も教えていただけたら嬉しいのですが。。。 どうぞ、よろしくお願いいたします。

  • ユーザーフォームにデータを入力

    「開発」→「Visual Basic」→「フォーム」の「UserForm1」をクリックして表示されるUserFormに何個かのテキストボックスを作成しています。 そのテキストボックスに入力するデータをワークシートにあるデータを自動的に入力( 表示)させる方法はありませんか? ちなみに、ワークシート上でセルをクリックするとそのワークシート上にデータが自動的に入力されたUserFormが表示されるようにはしています。 今回の質問は、「開発」→「Visual Basic」→「フォーム」の「UserForm1」をクリックして表示されるUserFormのテキストボックスのことです。(この画面では、手入力しかできないのでしょうか?) Excel 2013 です。 よろしくお願いします。

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

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

  • EXCEL VBAでユーザーフォームを使ってデータを入力したい。

    EXCEL VBAでユーザーフォームを使ってデータを入力したいと思っています。(ユーザーフォームはできています。) 入力項目が4項目あります。 名前 作業コード 開始時間 終了時間 上記4項目と登録ボタンです。 sheet1にユーザーフォームを表示し sheet2の A1に名前 B1に作業コード C1に開始時間 D1に終了時間が 登録ボタンを押すごとに どんどんデータを記録していきたいのです。 VBA初心者ですのでコードがよくわかりません。 ご教授ください。よろしくお願いいたします。

  • エクセルのユーザーフォームの作り方で

    エクセルのVBAの初歩的なことで教えてください。小学生の子供用の学習ソフトを試作しています。シート1を問題の表示画面とし、シート2に問題のデータを保存しています。学習者はシート1を見て、最初に名前や使った日をユーザーフォームに入力すると、そのデータがシート1の表示されていない下の方のセルに記録されるようにマクロを組んで作りました。そのユーザーフォームを、シート1に作ったコマンドボタン(テキストは「開始」としました)を押すと表示されるようにしたいのです。そのためのコマンドボタンをどのように作ればよいでしょうか。ユーザーフォームの方は、マクロを実行すれば立ち上がり正常に入力(登録)できます。VBAの本を読んで独学で勉強し始めたばかりですので、できればわかりやすく教えてください。

  • ユーザーフォームのプロパティが表示しなくなる。

    ワークシートのコマンドボタンでユーザーフォームを表示しテキストボックスに入力後、ワークシートに転記するマクロを作成しているのです。 途中で作動テストをすると上手く動きましたが、しばらく放置し又、動かしてみるとえエラー出る。 調べようとしてもユーザーフォームのプロパティがパスコードエラーで全く表示されなくなっている。 その後自動保存される。 再度開きなおして作動させると作動するけど又、同じ現象になる。 プログラミングの問題なのでしょうか。

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

    エクセルのユーザーフォームについて教えてください。 ユーザーフォームにてメニュー画面を作成しました。 ユーザーはメニューからの操作だけでエクセルシートを作成できるようなマクロをつくりました。 ユーザーフォームのコマンドボタンでEXCELを終了させることはできますか? VBAの記述方法も教えてください。

  • VBAユーザーフォーム

    VBA初心者です。ユーザーフォームを作成しシート上に一覧表示をできるように作成しました。(本を見ながらとこちらで質問等させて頂きやっとできました) なので、次にsheet1に一覧表示を作成しているので、sheet2に個別表示の仕方はどうしたらよいか教えて頂きたいです。一人の人の情報量が多く、一人分の資料もほしいのですが・・ユーザーフォームから入力後に一覧と個別とにするのはどうすれば初心者でもできますか? 質問も下手なのでわかりにくいかもしれませんが、教えて頂けたらと思います。

  • ユーザーフォームに入力したデータを保持する方法

    VBA初心者です。いろいろ調べて徐々に進められていますが、、 こちらもなかなか見つからなかったので質問させていただきます。 現在、ユーザーフォームにテキストボックスをいくつか配置し、 さまざまな計算などをさせて、最終的にエクセルシートに反映させる。 といったことが出来るようにプログラムをしています。 ユーザーフォームのテキストボックスに一度入力したものを、 エクセルシートを閉じるまで残すことはできるでしょうか? 一度、×ボタンで閉じてしまうと、次に呼び出したときには初期の状態になってしまいます。 ユーザーフォームに入力し、エクセルシートで確認、 その後 再度ユーザーフォーム呼び出して修正する といった作業をするために、一度入力したものが消えないようにしたいです。 よろしくお願いいたします。

専門家に質問してみよう