No.1ベストアンサー
- 回答日時:
こんにちは。
Userform 不要でシート選択ダイアログを表示する方法です。
Excel 組み込みダイアログではあるのですが、通常の方法
Dialogs().Show ではシート選択ダイアログは表示できませんし、
そもそも Dialogs は戻り値がありません。
そこで、ちょっとトリッキーな手法を使ってシートオブジェクト
を返す関数にしてます。
Sub Sample()
Dim Sh As Worksheet
Set Sh = ShowSelectSheetDialog()
If Not Sh Is Nothing Then
MsgBox Sh.Name & "が選択されました。アクティブにします(・∀・)", _
vbInformation
Sh.Activate
Else
MsgBox "キャンセルされましたよ(・∀・)", vbExclamation
End If
Set Sh = Nothing
End Sub
' // シート選択ダイアログを表示
' // 戻り値: 選択されたシートオブジェクト キャンセル時:Nothing
Public Function ShowSelectSheetDialog() As Worksheet
Dim ShBackup As Worksheet
Application.ScreenUpdating = False
Set ShBackup = ActiveSheet
With CommandBars.Add(Temporary:=True)
.Controls.Add(ID:=957).Execute
.Delete
End With
' Return
If Not ActiveSheet Is ShBackup Then
Set ShowSelectSheetDialog = ActiveSheet
End If
ShBackup.Select
Application.ScreenUpdating = True
End Function
KenKen_SP さん、こんにちは。
早速、教えていただいた方法で試してみたところ、希望通りのことができました(^o^)丿
今までも何度か回答をいただいていますが、いつも「すごいなぁ~」としみじみ(?)思っています。
ありがとうございました!
No.2
- 回答日時:
ユーザーフォームを作成し、ListBoxとCommandButtonをそれぞれ1つずつ配置します。
(UserForm1、ListBox1、CommandButton1ができるはずです)なおCommandButtonはキャンセルボタンとして使用します。
この行直下のマクロは標準モジュールシートに貼り付けます
Sub ListBoxShow()
Dim idx As Integer
UserForm1.ListBox1.Clear
For idx = 1 To ThisWorkbook.Worksheets.Count
UserForm1.ListBox1.AddItem Worksheets(idx).Name
Next idx
UserForm1.Show
End Sub
以下のマクロはユーザフォームモジュールに貼り付けます。
ユーザフォームモジュールシートはVBE画面でユーザーフォームをダブルクリックすると表示されます
Private Sub CommandButton1_Click()
Me.Hide
End Sub
Private Sub ListBox1_Click()
MsgBox (ListBox1.Text & "が選択されました")
'Copy & Paste例
' Worksheets("Sheet1").Range("A1:A10").Copy _
' Destination:=Worksheets(ListBox1.Text).Range("A1")
Me.Hide
Worksheets(ListBox1.Text).Activate
End Sub
zap35 さん、こんにちは。
今回、ユーザーフォームを使用したのは初めてだったのですが、丁寧に説明していただいたおかげで、希望通りのことができ、勉強になりました。
ありがとうございました<(_ _)>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) マクロVBA別Excelブックにデータ転記 2 2022/07/10 23:35
- Excel(エクセル) Excelの複数ファイルの複数行を別ファイル1つのシートにVBA、マクロで集約する方法 5 2022/09/13 06:30
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) コンボボックス及びリストボックスを5段階連動させる方法をご存知の方ご教授頂きたいです。 Excelで 3 2022/04/03 21:43
- Excel(エクセル) シートが違う2枚のエクセルシートにある数値を別シートにコピーしたい(VBA?) 8 2022/03/31 12:24
- Visual Basic(VBA) VBAマクロ 決まっていない行を選択して別シートへ貼付け 4 2023/02/16 16:08
- Excel(エクセル) EXCEL マクロで 同じフォルダ内の複数ファイルの複数行全体を選択して1つのファイルに集約 4 2022/09/27 18:41
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Excel(エクセル) エクセルシートのデータを1列飛ばしで別ブックのシートに貼り付けるマクロが知りたい 2 2023/06/05 22:37
- その他(パソコン・スマホ・電化製品) エクセル初心者です。 仕事でエクセルを使っていて、普段は素人でもできる簡単な関数を使ったことがある程 1 2022/05/25 11:17
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
別ブックをダイアログボックスで指定してそこにあるシートをコピーしたい
Excel(エクセル)
-
VBAでどうプログラムしたらいいのか教えてください
Word(ワード)
-
VBAでユーザーに別ファイルのシートを選ばせたい場合
その他(Microsoft Office)
-
-
4
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
5
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
6
VBA 存在しないシートを選択した時にエラーメッセージを表示するには?
Visual Basic(VBA)
-
7
エクセルVBAでファイル・シート名を指定して、現在のブックのシートにコピーしたい
Visual Basic(VBA)
-
8
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
9
VBAでシート名を選んで転記する方法
Visual Basic(VBA)
-
10
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
11
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
12
VBAでダブルコーテーション入りの数式をセルにセットしたい
Visual Basic(VBA)
-
13
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
14
「選択範囲を解除してアクティブセルを選択」をマクロで行うにはどうすればよいでしょうか
Excel(エクセル)
-
15
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
16
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
17
WorkBooksをオープンさせずにシートにコピーしたい【EXCEL VBA】
Excel(エクセル)
-
18
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
19
同じ作業を複数のシートに実行させるにはどうしたらいいのでしょうか
Visual Basic(VBA)
-
20
エクセルVBAでOptionButtonのオンオフ取得
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
特定のシートのみ再計算させな...
-
【ExcelVBA】マクロの入ったシ...
-
エクセルのシート連番の振り直し
-
エクセルで複数のシートに画像...
-
エクセルでブック内の倍率がバ...
-
DATE関数 4月31日などのあ...
-
特定の複数のシートに同じ処理...
-
ワークシートそのものの色を変...
-
指定したシート名以外を非表示...
-
エクセルシートのタブの階層化表示
-
エクセルの2つのシートを並び...
-
エクセルで、シートの名前を変...
-
ハイパーリンクでジャンプした...
-
EXCELの図形(テキストボックス)...
-
エクセル、特定のシートにパス...
-
EXCEL VBAについて、ワークシ...
-
エクセルの複数シートでのリン...
-
[エクセル]行の挿入、シート間...
-
Excel VBAで、複数のシートの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルで複数のシートに画像...
-
特定のシートのみ再計算させな...
-
エクセルでブック内の倍率がバ...
-
ワークシートそのものの色を変...
-
【ExcelVBA】マクロの入ったシ...
-
エクセルの2つのシートを並び...
-
EXCELの図形(テキストボックス)...
-
ハイパーリンクでジャンプした...
-
エクセルのシート連番の振り直し
-
特定の複数のシートに同じ処理...
-
エクセルのシー名を二段表示に...
-
Wordで差し込み印刷時に表示す...
-
エクセルで、シートの名前を変...
-
エクセルでリンク貼り付けした...
-
エクセル、特定のシートにパス...
-
accessへエクセルの複数のシー...
-
Accessのテーブルを既存のExcel...
-
【Excel VBA】データ貼り付け先...
-
EXCELの「シートの見出し」のフ...
おすすめ情報