[[20160520120725]] 『VBAでシートをリストから選択したい』(サンボ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『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


'ご参考
Sub main() '標準モジュール
   '選択前のシートでの処理を記述
    '…
    'シート切替
    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


Sub test()
    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.