VBA初心者です。下記のようにプログラムしましたがうまくいかなくて困ってます。どなたかお力をお貸しください。内容としましては輸入Partsのシートからコピーして商品内容確認のシートのセルB17に貼り付けたいです。輸入Partsシートで3列目の空白を探し同じ行の1列目をコピーします。商品内容確認のシートのセルB17にはカーソルは動いているようですが貼りつきません。
Private Sub 商品内容確認2_Click()
If MsgBox("商品内容確認へ移動しますか?", 33, "移動の確認") = 2 Then
MsgBox "処理を中止します。"
Range("A2").Select
Exit Sub
End If
Dim Line As String
Dim Maxrow As String
Worksheets("輸入Parts").Select
Line = 2
Do Until Cells(Line, 1).Value = ""
On Error Resume Next
If Cells(Line, 3).Value = "" Then
Cells(Line, 1).Copy 'コピーする
Maxrow = Worksheets("商品内容確認").Range("B17").End(xlDown).Row + 1
Worksheets("商品内容確認").Range("B" & Maxrow).PasteSpecial Paste:=xlPasteValues '値を貼り付け
End If
On Error GoTo 0
'次の行に移り最後の行まで検索
Line = Line + 1
Loop
Worksheets("商品内容確認").Visible = True
Worksheets("商品内容確認").Select
Worksheets("商品内容確認").Range("B6").Select
Worksheets("商品内容確認").輸入Partsシート2.Visible = True
Worksheets("商品内容確認").輸出Partsシート2.Visible = False
Worksheets("輸入Parts").Visible = False
End Sub
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>輸入Partsのシートからコピーして商品内容確認のシートのセルB17に貼り付けたいです。
ふむふむ。
>Maxrow = Worksheets("商品内容確認").Range("B17").End(xlDown).Row + 1
>Worksheets("商品内容確認").Range("B" & Maxrow).PasteSpecial Paste:=xlPasteValues '値を貼り付け
何これ。B17に貼り付く訳ないじゃん。
「B列の一番最後を探して、一番最後の行の次の行」に貼り付けようとしてるじゃん。
どっかのマクロを参考にしたんだろうけど、何やってるかも判らずに使ったら、思い通りに動く訳ないじゃんか。
あと、ペーストする時は、ペースト先のワークシートを選択してからペーストしないとエラーになるので、ペーストされずにエラーになって、そのエラーも
On Error Resume Next
で「エラー無視して次に進め」ってやってるから、結果的に「何も貼り付かない」よ。
On Error Resume Next
ってのは「完成してちゃんと動作するまで、決して使ってはならない」のよ。
未完成なのにこんなの入れたら「エラーが出てもエラー表示しない」から「何かエラーが起きても、無かったことになる」ので、自分のプログラムミスに気付けないし、動作しない原因も判らなくなる。
とにかく「初心者はOn Errorは絶対に使うな」って事。使っても良いのは「完成した後」だけ。
とりあえずOn Error Resume Nextをコメントにして(頭に ' (Shift+7)を付ける)実行してみな。何で動かないかが一発で判るから。
No.1
- 回答日時:
途中途中の
Cells(Line, 3).Value = ""など、
結局どこを表示しているのか分からない状態が多いので
With Worksheets("輸入Parts")
.select
If .Cells(Line, 3).Value = "" Then
Cells(Line, 1).Copy 'コピーする
End with
そして、そもそも値を貼り付けるだけなのなら
=で繋いでしまうほうが簡単だと思います。
If .Cells(Line, 3).Value = "" Then
Maxrow = Worksheets("商品内容確認").Range("B17").End(xlDown).Row + 1
Worksheets("商品内容確認").Range("B" & Maxrow).value=Cells(Line, 1).value
End If
とかでしょうか?
試していないため、合っているかどうかは分かりませんが…
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) VBA でvlookup エラーなどは削除したい 8 2022/12/30 04:03
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
Excelマクロのエラーを解決した...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
ExcelのVBAのマクロで他のシー...
-
【Excel VBA】Worksheets().Act...
-
実行時エラー1004「Select メソ...
-
同じ作業を複数のシートに実行...
-
実行時エラー'1004': WorkSheet...
-
excelのマクロで該当処理できな...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
エクセルのシート名変更で重複...
-
XL:BeforeDoubleClickが動かない
-
VBAでオブジェクト変数にsetし...
-
VBA 最終行まで数式をコピーする
-
エクセルVBA Ifでシート名が合...
-
VBA 検索して一致したセル...
-
ブック名、シート名を他のモジ...
-
Excel マクロについての相談
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
XL:BeforeDoubleClickが動かない
-
ExcelVBA シート名を複数セルか...
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
【Excel VBA】Worksheets().Act...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
Excel マクロについての相談
-
VBA 検索して一致したセル...
おすすめ情報