[[20181015090255]] 『テキストボックスのテキストでシート名指定』(黒糖) ページの最後に飛ぶ

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

 

『テキストボックスのテキストでシート名指定』(黒糖)

VBAについて質問です。

現在UserFormを使いVBAを作成しているのですが、sheetの指定がうまくいかず詰まっております。
現在作成しているマクロは指定のブックを開き、お互いのブックで該当するデータがあるときマクロブックにデータを記入するというものです。
通常であればシート名が決まっていればブックをまたいでもきちんと記入できると思うのですが、今回のマクロブック側のシート名は都度変わるもののため指定ができない状態となっております。
このマクロを実行する際「TextBox1に"年"」「TextBox2に"月"」を入力し実行します。そして都度変わるマクロブック内シートの名前は「"年"」部分と同じものが設定される予定です。(例:2018(年はつかない予定です。))
そのためマクロ実行時にTextBox1に記入されたテキストをシート名として指定したいのですが調べても書き方がわかりませんでした。
伝わりづらく申し訳ございませんが、ご回答よろしくお願いいたします。

Private Sub CommandButton1_Click()

Dim wb0 As Workbook
Dim wb1 As Workbook
Dim i As Long
Dim j As Long

Application.ScreenUpdating = False

Workbooks.Open (ThisWorkbook.Path & "\テストブック.xlsx")

Set wb0 = ThisWorkbook
Set wb1 = Workbooks("テストブック.xlsx")

For i = 3 To Cells(Rows.Count, "B").End(xlUp).Row
For j = 2 To wb1.Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row
lastcolumn = Cells(1, Columns.Count).End(xlToLeft).Column + 1

If UserForm2.TextBox1.Text = wb1.Sheets("Sheet1").Cells(j, "A").Value Then

    If UserForm2.TextBox2.Text = wb1.Sheets("Sheet1").Cells(j, "B").Value Then
        If Cells(i, "B").Value = wb1.Sheets("Sheet1").Cells(j, "C").Value Then
            Cells(i, lastcolumn) = wb1.Sheets("Sheet1").Cells(j, "F").Value
End If
    End If
        End If
Next j
Next i

wb1.Close

MsgBox "完了"

Unload UserForm2

Application.ScreenUpdating = True

End Sub

< 使用 Excel:Excel2016、使用 OS:unknown >


 >sheetの指定がうまくいかず詰まっております。 

 でいいんじゃないですか?(シートが存在しない場合の例外処理が要るかも知れないですが・・)
 ↓
 wb0.Sheets(UserForm2.TextBox1.Text)

 ただ、全体に長ったらしい気がします。

 各ブックが関係するシート数が各1枚だけなら、

 >Dim wb0 As Workbook 
 >Dim wb1 As Workbook 

 より、ワークシートを特定したオブジェクトで処理した方がいいように思います。(私の好みかも知れないけど)

   Dim ws0 As Worksheet
   Dim ws1 As Worksheet

 あと、複数のブック(シート)が絡んでいるので、Cellの親シートはチャンと修飾した方がいいです。

(半平太) 2018/10/15(月) 10:30


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.