前提・実現したいこと
色々調べてみたのですが、独学で勉強を始めたばかりで答えが見つからなかったのでよろしくお願いします。
VBAで日次データのブックから月次データのブックに転記して、指定したセルが入力されていたらその下に、そこも入力されていたらさらに下に……となるようにしたいです。
一応の補足ですが、転記先をひとつだけ指定しているのは、次の月に移ったら前月分はシートごとコピーして別にして、”当月分”をまた使うため最初の転記先は固定したいからです。
このコードに至るまで散々エラーを出したので他にもおかしい箇所があるかもしれませんが、何が何やらわからず苦戦しております。質問箇所以外にエラーのもとがあるようでしたら、ご教授頂ければ幸いです。
発生している問題・エラーメッセージ
IF文で指定したセルが空白ならそのまま貼り付け、そうでないならその下のセルに貼り付け……というのをやってみたのですが、定義がうまくできてないようで……
下記コードの10行目「Workbooks("利用者統計用.xlsm").Sheets("当月").Range("necopy").PasteSpecial Paste:=xlPasteValues」に「アプリケーション定義またはオブジェクト定義のエラー」が発生してしまいます。
該当のソースコード
Sub 統計コピー() Dim tocopy, necopy As Long tocopy = Workbooks("利用者統計用.xlsm").Sheets("当月").Range("B4") 'コピー先を変数宣言 necopy = Cells(Rows.Count, "B").End(xlUp).Row + 1 If tocopy = "" Then '空白であればそのまま貼り付け Workbooks("日次利用者.xlsm").Sheets("Sheet1").Range("A17:P17").Copy Workbooks("利用者統計用.xlsm").Sheets("当月").Range("B4").PasteSpecial Paste:=xlPasteValues '別ブックへ値のみ貼り付け Application.CutCopyMode = False 'セル範囲選択状態を解除 Else '入力済みならその下へ貼り付け指示 Workbooks("日次利用者.xlsm").Sheets("Sheet1").Range("A17:P17").Copy Workbooks("利用者統計用.xlsm").Sheets("当月").Range("necopy").PasteSpecial Paste:=xlPasteValues '別ブックへ値のみ貼り付け Application.CutCopyMode = False 'セル範囲選択状態を解除 End If End Sub
試したこと
定義エラーだったので変数がいけないのかと思い、変数なしでやってみましたが当然ながらダメでした。
特にIF構文に拘りがあるわけではないのですが、勉強中でほかにどの構文が適しているかわかりません。
改めてよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー