
エクセルでユーザーフォームを作成し、エクセルのワークシート上のボタンからユーザーフォームを表示するようにしました。
ワークシート上のボタンをクリックして表示されたユーザーフォームにデータを入力してユーザーフォームを終了しワークシートを保存終了、再度そのワークシートを開いてボタンからユーザーフォームを表示すると入力したデータが消えてしまいます。
ユーザーフォームに入力したデータがそのまま保存できて次に開いたときにデータが残っている方法はありませんか?
今回、ユーザーフォームを作成をした目的は、ユーザーフォームに入力したデータを元に住所録等を作成するためではありません。ですからユーザーフォームに入力したデータはワークシートと連動させていません。
やりたいことは、ワークシート上に氏名一覧があり、個々の氏名欄にボタンを作成して、その人のデータ一覧をユーザーフォームで表示させるということです。
ユーザーフォームは、人数分を作成する予定です。
A 回答 (2件)
- 最新から表示
- 回答順に表示
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 のように項目を増やすことによって、
同じダブルクリックなのに、別の動作をさせることも可能になります。
余計なお世話になってしまいましたが、実は、こういうスタイルで、ここの掲示板にアクセスしています。
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
'//
>ワークシート上に氏名一覧があり、個々の氏名欄にボタンを作成して、その人のデータ一覧をユーザーフォームで表示させるということです。
こういう場合は、ボタンよりも、イベント・ドリブン型マクロで、ダブルクリックや右クリックで、ユーザーフォームを出す方法が軽くなります。
>ユーザーフォームは、人数分を作成する予定です。
ただ、今の時代はどうか知りませんが、私は、ユーザーフォームの数は、作りすぎると、思わぬトラブル(クラッシュ)になることがありましたので、なるべく、ユーザーフォームの数は増やさないようにしています。
参考になれば幸いです。
回答ありがとうございあした。
おかげさまで、保存終了することができました。
ボタンよりも、イベント・ドリブン型マクロがいいとのこと、
出来れば、
イベント・ドリブン型マクロの作成方法を教えていただけませんでしょうか?
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) Excelで総数量を変動させたい 2 2022/11/04 23:49
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
- Access(アクセス) アクセス フォームの自動入力 1 2023/03/20 00:18
- Excel(エクセル) エクセルのファームにプルダウン設置できますか? 2 2022/05/19 23:38
- Access(アクセス) access レポート 請求書について 2 2022/07/04 22:52
このQ&Aを見た人はこんなQ&Aも見ています
-
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
テキストボックス入力データの保持について
Visual Basic(VBA)
-
ユーザーフォームのテキストボックスに前回入力した値を表示する Excel
Visual Basic(VBA)
-
-
4
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
-
5
エクセルでフォーム中のテキスト値の保存方法
Excel(エクセル)
-
6
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
7
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
8
UserForm1.Showでエラーになります。
工学
-
9
Excel ユーザーフォームで表示させた画像をユーザーフォーム上で保存したい
Visual Basic(VBA)
-
10
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
-
11
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
12
ファイルを終了しても、値を保持する。
Excel(エクセル)
-
13
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
14
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
15
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
16
エクセルのプルダウン三角マークの表示が小さい
Excel(エクセル)
-
17
【エクセル】シート内の表をUserFormに画像として表示させる方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【条件付き書式】countifsで複...
-
エクセルの保護で、列の表示や...
-
文字の色も参照 VLOOKUP
-
VBAで繰り返しコピーしながら下...
-
Excelでの並べ替えを全シートま...
-
Excelのセルの色を変えた行(す...
-
excel 複数のシートの同じ場所...
-
エクセルで、チェックボックス...
-
エクセル マクロ 標準モジュー...
-
ExcelのVlookup関数の制限について
-
スプレッドシートでindexとIMPO...
-
【VBA】ピボットテーブルを既存...
-
エクセルの列の限界は255列以上...
-
Excel の複数シートの列幅を同...
-
シートをまたぐ条件付き書式に...
-
Excelに自動で行の増減をしたい...
-
【VBA】複数のシートの指定した...
-
Excel VBA ピボットテーブルに...
-
VLOOKアップ関数の結果の...
-
SUMPRODUCTにて別シートのデー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字の色も参照 VLOOKUP
-
ExcelのVlookup関数の制限について
-
【条件付き書式】countifsで複...
-
エクセルの保護で、列の表示や...
-
Excelのセルの色を変えた行(す...
-
エクセルで、チェックボックス...
-
VBAで繰り返しコピーしながら下...
-
シートをまたぐ条件付き書式に...
-
Excelでの並べ替えを全シートま...
-
Excel の複数シートの列幅を同...
-
Excelに自動で行の増減をしたい...
-
【VBA】複数のシートの指定した...
-
【エクセル】1列のデータを交...
-
SUMPRODUCTにて別シートのデー...
-
Excel 2段組み
-
エクセル マクロ 標準モジュー...
-
エクセルの列の限界は255列以上...
-
excel 複数のシートの同じ場所...
-
エクセルVBAで、ある文字を含ん...
-
VLOOKアップ関数の結果の...
おすすめ情報