- ベストアンサー
VBAでのシート保存
データの入力されているシートから検索をして条件が合うものを別のシートへコピーのVBAですが ' "AA", "BB", "CC", "DD" の4項目を検索 If Application.CountA(c.Offset(, 10).Resize(, 4)) <> 4 Then 'A列から、A列を含めて14列取得し、Sheet2にコピー c.Resize(, 14).Copy Sheet2.Cells(i, 1) i = i + 1 End If (コピーシートは一部ロックで保護、検索の結果をコピーする部分はロック解除しています)つぎのディバックエラーです。 c.Resize(, 14).Copy Sheet2.Cells(i, 1) 解決できません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 #1さんのおっしゃるとおり、なるべく、質問するときは、出来る限り全体が分かるようにしてください。また、デバッグエラーは、その番号とエラーの内容を書き出してください。 >コピーシートは一部ロックで保護、検索の結果をコピーする部分はロック解除しています 特に、通常のロックの場合は関係がありません。ただ、.EnableSelection = xlUnlockedCells としてあれば、別です。それを外さないとエラーが出るはずです。それから、これは、もしかしたら、ご自身で書いたマクロとは違いますね。 Dim Rng As Range Dim c As Range Dim i As Long Set Rng = Range("A1", Range("A65536").End(xlUp)) i = 1 '開始行の初期値 For Each c In Rng If WorksheetFunction.CountA(c.Offset(, 10).Resize(, 4)) < 4 Then c.Resize(, 14).Copy Sheet4.Cells(i, 1) i = i + 1 End If Next c Set Rng = Nothing
その他の回答 (1)
- myCat
- ベストアンサー率60% (9/15)
こんばんは。 >' "AA", "BB", "CC", "DD" の4項目を検索 これのコードどこにも無いですね・・・(^^;;; と突っ込みは置いといて。。 ほんの一部のコードしか書いてありませんので 提示のコードだけでエラーを判断すると、 変数 i の初期設定がされてないのでは? ですから、最初に該当の部分をコピーするとき 変数 i は、0 ですから、 Sheet2.Cells(0,1)となりエラーとなる ループする前に、i=1 とか変数の初期設定をしましょう。 以上です。
お礼
Wendy02さんありがとうございます。 確かにこのマクロあなた様に助けていただいたやつです。 自分で頑張っているのですが、これからも見捨てないでくださいね。