
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
別ブックをダイアログボックスで指定してそこにあるシートをコピーしたい
Excel(エクセル)
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
【Excel VBA】ファイルとシートを選択してコピーする処理
Excel(エクセル)
-
-
4
【Excel VBA】任意のファイルだけでなく、シートまで指定する方法?
Visual Basic(VBA)
-
5
VBAでどうプログラムしたらいいのか教えてください
Word(ワード)
-
6
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
7
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
8
もしセルが#N/A"なら~をする・・・には?"
Excel(エクセル)
-
9
VBA ファイルを開くダイアログでの初期表示にファイルサーバーを指定
Excel(エクセル)
-
10
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
11
Excel VBA あるセルでENTERを押すと特定のセルへ移動したい
Excel(エクセル)
-
12
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
13
マクロ 新しいシートにデータをコピペしてシートの名前を変更したい
Excel(エクセル)
-
14
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
15
VBA 別ブックからコピペしたいのですが、軽くしたいです
Visual Basic(VBA)
-
16
エクセルVBAでファイル・シート名を指定して、現在のブックのシートにコピーしたい
Visual Basic(VBA)
-
17
Excel VBAで、ユーザーフォームの値を、モジュールで使用したい。
Visual Basic(VBA)
-
18
VBAで、なぜかSendkeyが効きません。
PowerPoint(パワーポイント)
-
19
EXCELのダイアログシートって、なんですか?
Excel(エクセル)
-
20
Enterキーでマクロを起動さす。
その他(ソフトウェア)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
ハイパーリンクでジャンプした...
-
特定のシートのみ再計算させな...
-
エクセルのシー名を二段表示に...
-
【ExcelVBA】マクロの入ったシ...
-
エクセルで複数のシートに画像...
-
エクセルシートの見出しの文字...
-
Accessのテーブルを既存のExcel...
-
ワークシートそのものの色を変...
-
Nintendo Switch 2 キャリング...
-
エクセルで誤ってF11キーを押す...
-
エクセルの2つのシートを並び...
-
エクセル、特定のシートにパス...
-
エクセルのファイルサイズが急...
-
共有されたスプレッドシートに...
-
Excel VBAで、複数のシートの...
-
EXCELの図形(テキストボックス)...
-
エクセルで、シートの名前を変...
-
エクセルマクロでシート名を条...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルシートの見出しの文字...
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
特定のシートのみ再計算させな...
-
【ExcelVBA】マクロの入ったシ...
-
ハイパーリンクでジャンプした...
-
EXCELの図形(テキストボックス)...
-
EXCELで存在しないシート...
-
エクセルで複数のシートに画像...
-
エクセル、特定のシートにパス...
-
エクセルのシー名を二段表示に...
-
ワークシートそのものの色を変...
-
Wordで差し込み印刷時に表示す...
-
Accessのテーブルを既存のExcel...
-
エクセルのファイルサイズが急...
-
エクセルの複数シートでのリン...
-
エクセルで、シートの名前を変...
-
エクセルの2つのシートを並び...
-
EXCELの「シートの見出し」のフ...
-
Excelでマクロ設定したが反映さ...
おすすめ情報