ほぼ同じコードを使用し、うまくいく場合といかない場合があり、困り果てております。
以下のコードにおいて
Set pasteSheet = Sheets(copySheet.Cells(copyRow, "I").Value)
copyRow=3 でエラーとなり、
I列には =IF(H2=0," ",VLOOKUP(H2,商品リスト!O:P,2,0)) の数式が入っており、
H2に数値が入っており、問題なし
H3が空白の場合、エラーとなります
空白の場合のエラーをなくしたいのですが、どうしてもできません。
試したこと
* For copyRow = 2 To 7 を
For copyRow = 2 To copySheet.Cells(Rows.Count, "I").End(xlUp).Row
* If IsError(val) = False Then を
If IsNumeric(val) = True And val > 0 Then
* If IsError(val) = False Then を
If IsError(val) = False And val <> "" Then
1つずつ試しに変更してみても、うまくいきません。
どのような変更が必要でしょうが、ご教授いただけると助かります。
VBA
1Public Sub sample() 2 Sheets("データ蓄積").Select 3 最終 = Cells(Rows.Count, "A").End(xlUp).Row + 1 4 Sheets("データ移行").Select 5 6 InRow = 7 Do While Trim(Range("A" & InRow)) = "" And InRow >= 2 7 InRow = InRow - 1 8 Loop 9 If InRow <= 1 Then 10 MsgBox "データがありません。" 11 Exit Sub 12 End If 13 Range("A2:H" & InRow).Select 14 15 Selection.Copy 16 17 Sheets("データ蓄積").Select 18 Range("A" & 最終).Select 19 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 20 :=True, Transpose:=False 21 22 23 24 Dim copyRow As Long 25 Dim copySheet As Worksheet 26 Dim pasteRange As Range 27 Dim pasteSheet As Worksheet 28 Dim val As Variant 29 30 Set copySheet = Sheets("データ移行") 31 32 For copyRow = 2 To 7 33 34 val = copySheet.Cells(copyRow, "I").Value 35 36 If IsError(val) = False Then 37 **Set pasteSheet = Sheets(copySheet.Cells(copyRow, "I").Value)** 38 Set pasteRange = pasteSheet.Cells(Rows.Count, "A").End(xlUp).Offset(1) 39 pasteRange.Resize(, 4).Value = copySheet.Range(copySheet.Cells(copyRow, 1), copySheet.Cells(copyRow, 4)).Value 40 pasteRange.Resize(, 1).Offset(, 5).Value = copySheet.Cells(copyRow, 6).Value 41 End If 42 Next 43 44 Sheets("情報入力").Select 45 Range("C6").Select 46 47End Sub 48
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/13 01:19