[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『テキストボックスのテキストでシート名指定』(黒糖)
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.