[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAでシートをリストから選択したい』(サンボ)
複数あるシートから特定のシートを対象にした処理をしたいです。 シート名に規則性はなく、今後シートの削除、追加、名前の変更などがあります。
VBAの実行途中で、現在のシート名を表示してそこから目的のシートを選択、 そのままVBAの実行を続けるということを考えていますが、方法がわかりませんので お教えいただけますでしょうか。
< 使用 Excel:Excel2013、使用 OS:Windows7 >
参考になりますか?
Sub Test() Dim c As Range
On Error Resume Next Set c = Application.InputBox("現在のシート名は" & ActiveSheet.Name & "です。" & vbLf & _ "次に処理したいシートの任意のセルを選んでください", Type:=8) On Error GoTo 0
If c Is Nothing Then Exit Sub 'キャンセルボタン
MsgBox "選ばれたシート名は" & c.Parent.Name & "です"
c.Parent.Select
End Sub
(β) 2016/05/20(金) 13:14
'選択前のシートでの処理を記述 '… 'シート切替 UserForm1.Show With ActiveSheet '選択後のシートでの処理を記述 '… End With End Sub
Private Sub UserForm_Initialize() 'フォームモジュール
Dim i As Integer
For i = 1 To Worksheets.Count
ListBox1.AddItem Worksheets(i).Name
Next i
End Sub
Private Sub ListBox1_Click() 'フォームモジュール
Sheets(ListBox1.Text).Select
Unload Me
End Sub
(mm) 2016/05/20(金) 13:20
別案。 いったんメッセージがでてから、リスト選択画面がでるのが、ちょっとしゃくに(?)さわりますが。
Sub Test2()
MsgBox "現在のシートは" & ActiveSheet.Name & "です" & vbLf & _ "次に処理したいシートを選んでください" With CommandBars("Workbook tabs") .ShowPopup End With
MsgBox "選ばれたシートは" & ActiveSheet.Name & "です"
End Sub
(β) 2016/05/20(金) 13:24
If SelectSheet Then MsgBox "処理" Else MsgBox "キャンセル" End If End Sub
Function SelectSheet() As Boolean
Dim NameBefore As String NameBefore = ActiveSheet.Name Application.CommandBars("Workbook Tabs").ShowPopup If ActiveSheet.Name <> NameBefore Then SelectSheet = True Else SelectSheet = False End If End Function
(とおりすがり) 2016/05/20(金) 13:43
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.