こんにちは。
Excel VBAの転記作業について質問です。
下記のようなシートAの特定セルの値を、シートB、またはシートCより検索し
当てはまったセルの同じ列内のデータを、シートAの特定範囲に転記するマクロを組んでいます。
①シートAの特定セル("F10")で検索先シートの切り替え
②検索先シート内からシートA("D9")の値を検索
③検索先シートよりシートAに値を転記
大まかにこのような構成で組んでいますが、①のシートの切り替えがうまくいきません。
デバックエラー「オブジェクトが必要です」となります。
どこが間違っているのか自分では判断できないため、お力添えをお願いします。
下記コード
Sub ???a????_?{?^??3_Click()
Dim sh2 As String
Dim sh1 As Worksheet
Dim lot As Range
Dim area As Range
Dim kensaku As Range
Dim n As Variant
Dim y As Long
Dim i As Long
Dim comTxt As String
n = 18
Set sh2 = Worksheets("A").Cells(10, 6).Value
Set sh1 = ThisWorkbook.Worksheets("A")
Set lot = sh1.Range("D9")
Set area = Range(sh2.Cells(3, 7), sh2.Cells(3, Columns.Count).End(xlToLeft))
Set kensaku = area.Find(what:=lot.Value, LookIn:=xlValues, LookAt:=xlWhole)
If kensaku Is Nothing Then
MsgBox "Lot確認してください"
Else
For i = 8 To 390
For y = 15 To 35
Range(sh1.Cells(i + 1, kensaku.Column - 1), sh1.Cells(i + n, kensaku.Column - 1)).UnMerge
Range(sh1.Cells(8, y), sh1.Cells(9, y)).UnMerge
sh2.Cells(8, y).Value = sh1.Cells(i + 1, kensaku.Column - 1).Value
Range(sh1.Cells(8, y), sh1.Cells(9, y)).Merge
Range(sh2.Cells(i + 1, kensaku.Column - 1), sh2.Cells(i + n, kensaku.Column - 1)).Merge
Range(sh2.Cells(i, kensaku.Column), sh2.Cells(n + i, kensaku.Column)).Copy
Range(sh1.Cells(10, y), sh1.Cells(10 + n, y)).PasteSpecial xlPasteValues
i = i + 21
Next y
Next i
comTxt = sh2.Cells(6, kensaku.Column).Comment.Text
sh1.Cells(31, 15) = comTxt
sh1.Range(Cells(31, 15), Cells(40, 33)).Select
Selection.Merge
Selection.HorizontalAlignment = xlHAlignLeft
Selection.VerticalAlignment = xlVAlignTop
End If
End Sub
No.1ベストアンサー
- 回答日時:
まず、sh2はString型で定義されているので、ワークシートオブジェクトとして使用できません。
sh1と同じくAs Worksheetとして宣言します。
更に検索対象シート名格納用の別の変数を追加します。
Dim Target_SheetName As String
次に、処理1行目と2行目を
Set sh1 = ThisWorkbook.Worksheets("A")
Target_SheetName= Sh1.Cells(10, 6).Value
Set sh2 = Worksheets(Target_SheetName)
とします。
これで、sh1にはシートAが、Sh2にはシートAのF10に入力されているシートがセットされます。
No.2
- 回答日時:
blue_rumbleさんの回答と同様に、Setが大切です。
https://www.sejuku.net/blog/29031
関係ないですが、気になったので、
sh1.Range(Cells(31, 15), Cells(40, 33)).Select
Selection.Merge
Selection.HorizontalAlignment = xlHAlignLeft
Selection.VerticalAlignment = xlVAlignTop
↓
With sh1.Range(Cells(31, 15), Cells(40, 33))
.Merge
.HorizontalAlignment = xlHAlignLeft
.VerticalAlignment = xlVAlignTop
End With
がいいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) マクロで最終行を取得したい 4 2023/05/28 12:14
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで SendKeys "{TAB}"
-
Excel で行を指定回数だけコピ...
-
エクセルVBA 別シートの複数の...
-
シャープのアクオス sh-m25 を...
-
Excel VBA インデックスの境...
-
エクセル:VBAで月変わりで、自...
-
excelの差込印刷で可視セルだけ...
-
重複データの集計マクロについて
-
[EXCEL]全てのチェックボックス...
-
VBAで条件が一致する行のデータ...
-
Excel VBAでシート内全体に非表...
-
【WORD差し込み印刷】複数レコ...
-
WorkbooksとWorksheetsを簡単に...
-
エクセルVBAで 2種のリストを...
-
スマホ機種変更で旧機種のGoogl...
-
機種変更時にデータは見られる?
-
LAVIE Direct DT PC-GD298ZZAL...
-
外付けHDDをフローリングに落と...
-
拡張子「.HUF(.huf)」のファ...
-
au(MEDIASKIN)からiPhoneへの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel で行を指定回数だけコピ...
-
エクセルVBA 別シートの複数の...
-
シャープのアクオス sh-m25 を...
-
excelの差込印刷で可視セルだけ...
-
Excel VBA インデックスの境...
-
VBA:同じ文字列データの比...
-
エクセルVBAで 2種のリストを...
-
エクセル:VBAで月変わりで、自...
-
歯抜けの時間を埋めて行の挿入
-
エクセルVBAで SendKeys "{TAB}"
-
VBAで条件が一致する行のデータ...
-
VBA別シートの最終行の下行へ貼...
-
EXCELマクロで全シート対...
-
Excel VBAでシート内全体に非表...
-
VBA 貼付先範囲(行)がいっぱ...
-
VBAで複数シート選択
-
【VBA】UserForm1の中で使うワ...
-
【WORD差し込み印刷】複数レコ...
-
VBAで複雑な構成の転記
-
エクセルVBAでの日付順のデ...
おすすめ情報