|
▼UO3 さん:
返信ありがとうございます。
>アップされたサンプルデータも、まだ見ていませんし、コードも、ざらっと眺めただけですが、
>ループ構文の書き方としては、大いに改善すべき点はあるとして、
申し訳ありません。問題点が多くあることはわかってはいますが、
自分なりにやった結果、これ以上の改善方法がわからなかったので、
そちらも助言を頂けると嬉しいです。
>まず、ほんとうに『型が違います』というエラーでしたか?
>1004 で、『不適切です』といったエラーではなかったですか?
>
>>Sheets(1).Range(Cells(i, "D"), Cells(i + Y - 1, "D")).Copy Sheets(2).Range(Cells(m, 4), Cells(m, 4 + Y))←「型が違います」と表示され処理ができない.
>これはSheets(1)のD列の『縦』の領域を、Sheets(2)のD○から右の『横』の領域にコピペしようとしていますね。
やりたい処理は、おっしゃる通りです。
確かに「型が一致しません」というエラーでした。
ただ、行列入れ替えを試してみましたので、新しいコードを記載させていただきます。
>それと、なぜ
>Application.DisplayAlerts = False
>が、あるのでしょう?
>ざっと見る限り、これが必要なコード実行は見あたりませんが?
申し訳ありません。上記のコードは不要でしたので、
消去しました。
また、コードを張らせていただきますので、
改善点がございましたら、お手数ですがご返信を頂けると幸いです。
--------------------------------------------------------------------------
Sub コピペ()
i = 2
j = 2
m = 2
n = 3
o = 4
p = 5
q = 6
r = 7
p01:
If Cells(i, "A") = "" Then
Sheets(1).Cells(i + 1, "A").Copy Sheets(2).Cells(j, "A")
Sheets(2).Range(Cells(j, "A"), Cells(j + 5, "A")).MergeCells = True 'アプリケーション定義またはオブジェクト定義のエラー(上手く行く時もある)
Sheets(1).Cells(i + 1, "B").Copy Sheets(2).Cells(j, "B")
Sheets(2).Range(Cells(j, "B"), Cells(j + 5, "B")).MergeCells = True
Sheets(1).Cells(i + 1, "J").Copy Sheets(2).Cells(j + 1, "V")
Sheets(1).Cells(i + 1, "K").Copy Sheets(2).Cells(j + 3, "V")
Sheets(1).Cells(i + 2, "K").Copy Sheets(2).Cells(j + 4, "V")
Sheets(1).Cells(i + 3, "K").Copy Sheets(2).Cells(j + 5, "V")
j = j + 6
Y = Cells(i + 1, "B").Value
Sheets(1).Range(Cells(i + 1, "D"), Cells(i + Y, "D")).Select
Selection.Copy
Sheets(2).Select
Range(Cells(m, 4), Cells(m, 4 + Y)).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
m = m + 6
Sheets(1).Range(Cells(i + 1, "E"), Cells(i + Y, "E")).Select 'アプリケーション定義またはオブジェクト定義のエラーが発生
Selection.Copy
Sheets(2).Select
Range(Cells(n, 4), Cells(n, 4 + Y)).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
n = n + 6
Sheets(1).Range(Cells(i + 1, "F"), Cells(i + Y, "F")).Select
Selection.Copy
Sheets(2).Select
Range(Cells(o, 4), Cells(o, 4 + Y)).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
o = o + 6
Sheets(1).Range(Cells(i + 1, "G"), Cells(i + Y, "G")).Select
Selection.Copy
Sheets(2).Select
Range(Cells(p, 4), Cells(p, 4 + Y)).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
p = p + 6
Sheets(1).Range(Cells(i + 1, "H"), Cells(i + Y, "H")).Select
Selection.Copy
Sheets(2).Select
Range(Cells(q, 4), Cells(q, 4 + Y)).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
q = q + 6
Sheets(1).Range(Cells(i + 1, "I"), Cells(i + Y, "I")).Select
Selection.Copy
Sheets(2).Select
Range(Cells(r, 4), Cells(r, 4 + Y)).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
r = r + 6
Else
End If
i = i + 1
GoTo p01
End Sub
|
|