エクセルでユーザーフォームを作成し、エクセルのワークシート上のボタンからユーザーフォームを表示するようにしました。
ワークシート上のボタンをクリックして表示されたユーザーフォームにデータを入力してユーザーフォームを終了しワークシートを保存終了、再度そのワークシートを開いてボタンからユーザーフォームを表示すると入力したデータが消えてしまいます。
ユーザーフォームに入力したデータがそのまま保存できて次に開いたときにデータが残っている方法はありませんか?
今回、ユーザーフォームを作成をした目的は、ユーザーフォームに入力したデータを元に住所録等を作成するためではありません。ですからユーザーフォームに入力したデータはワークシートと連動させていません。
やりたいことは、ワークシート上に氏名一覧があり、個々の氏名欄にボタンを作成して、その人のデータ一覧をユーザーフォームで表示させるということです。
ユーザーフォームは、人数分を作成する予定です。
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
見学に行くとしたら【天国】と【地獄】どっち?
みなさんは、一度だけ見学に行けるとしたら【天国】と【地獄】どちらに行きたいですか? 理由も聞きたいです。
-
歳とったな〜〜と思ったことは?
歳とったな〜〜〜、老いたな〜〜と思った具体的な瞬間はありますか?
-
モテ期を経験した方いらっしゃいますか?
一生に一度はモテ期があるといいますが、みなさんどうですか? いまがそう! という方も、「思い返せばこの頃だったなぁ」という方も、よかったら教えて下さい。
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
【お題】斜め上を行くスキー場にありがちなこと
運営も客も一流を通り越して斜め上を行くスキー場にありがちなことを教えて下さい。
-
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
エクセルでフォーム中のテキスト値の保存方法
Excel(エクセル)
-
ユーザーフォームのテキストボックスに前回入力した値を表示する Excel
Visual Basic(VBA)
-
-
4
テキストボックス入力データの保持について
Visual Basic(VBA)
-
5
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
-
6
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
7
ファイルを終了しても、値を保持する。
Excel(エクセル)
-
8
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
9
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
10
UserForm1.Showでエラーになります。
工学
-
11
【エクセル】シート内の表をUserFormに画像として表示させる方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelのVlookup関数の制限について
-
文字の色も参照 VLOOKUP
-
Excelのセルの色を変えた行(す...
-
エクセルの保護で、列の表示や...
-
【条件付き書式】countifsで複...
-
SUMPRODUCTにて別シートのデー...
-
エクセルで、チェックボックス...
-
エクセルで横並びの複数データ...
-
Excelで全てのシートに一気に列...
-
エクセルの列の限界は255列以上...
-
Excelに自動で行の増減をしたい...
-
オートフィルタ使用時にCOUNTIF...
-
Excel の複数シートの列幅を同...
-
VBAで繰り返しコピーしながら下...
-
エクセルで小の月(29日以下)の...
-
エクセル マクロ 標準モジュー...
-
Excel 2段組み
-
【VBA】複数のシートの指定した...
-
【マクロ】対象データを別シー...
-
エクセルVBA シート1からシート...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelのVlookup関数の制限について
-
エクセルの保護で、列の表示や...
-
文字の色も参照 VLOOKUP
-
Excel の複数シートの列幅を同...
-
Excelでの並べ替えを全シートま...
-
VBAで繰り返しコピーしながら下...
-
【条件付き書式】countifsで複...
-
Excelのセルの色を変えた行(す...
-
エクセルで、チェックボックス...
-
エクセルの列の限界は255列以上...
-
VLOOKアップ関数の結果の...
-
Excelに自動で行の増減をしたい...
-
エクセル マクロ 標準モジュー...
-
【VBA】複数のシートの指定した...
-
Excel VBA ピボットテーブルに...
-
エクセルで横並びの複数データ...
-
【VBA】シート名と見出しが一致...
-
Excel 2段組み
-
SUMPRODUCTにて別シートのデー...
-
スプレッドシートでindexとIMPO...
おすすめ情報