重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

下記のマクロを実行したときに、Sheets("提供データ")のD列の7327行目はブランクなのに、Sheets("jyoken")のa列の7326行目に計算式がコーピされるのはなぜでしょうか。
ちなみにSheets("jyoken")のa列の2行目に=提供データ!D3という計算式
が入っています。
Sheets("jyoken")のa列の7326行目には計算式がコーピしないようにするにはどこを修正すればよいのでしょうか教えてください。

Sub 式複写()
Dim gyo, burank
ActiveWorkbook.PrecisionAsDisplayed = False
Sheets("提供データ").Select
Range("a2").Select
gyo = 2
burank = ""
Do
gyo = gyo + 1
burank = Worksheets("提供データ").Cells(gyo, 4).Text
Loop While burank <> ""
'
Sheets("jyoken").Select
Range("A2").Select
Selection.Copy
Range(Cells(3, 1), Cells(gyo - 1, 1)).Select '複写先
ActiveSheet.Paste

End Sub

A 回答 (4件)

ANo.3さんへ


sheet("提供データ")以外がカレントのとき、エラーになるので、
Sub 複写()
Dim d As Integer
ActiveWorkbook.PrecisionAsDisplayed = False
d = Sheets("提供データ").Range("D65536").End(xlUp).Row
Sheets("提供データ").Range(Sheets("提供データ").Cells(2, "D"), Sheets("提供データ").Cells(d, "D")).Copy Sheets("jyouken").Range("A2")
End Sub

または
Sub 複写()
Dim d As Integer
ActiveWorkbook.PrecisionAsDisplayed = False
Sheets("提供データ").Select
d = Range("D65536").End(xlUp).Row
Range(Cells(2, "D"), Cells(d, 4)).Copy Sheets("jyouken").Range("A2")
End Sub

とかにした方が良いと思います。
    • good
    • 0

質問ではコードを長々と読まされたが、


Sub 複写()
Dim d
ActiveWorkbook.PrecisionAsDisplayed = False
d = Worksheets("提供データ").Range("D65536").End(xlUp).Row
Worksheets("提供データ").Range(Cells(2, "D"), Cells(d, "D")).Copy Sheets("jyouken").Range("A2")
End Sub
これでたぶん実質同じではないの。
質問のエラー追及も必要なくなるのでは。
また内容は(プロシジュアー名の)式複写ではなく、式も値も書式も貼り付けますよ。
    • good
    • 0

提供データが1個の場合があるなら問題が起こるので、ifで囲った方がいいかも・・・


gyo>4の意味は、Sheets("提供データ")の最初のブランクがD4の場合、つまりgyo=4の場合は複写する必要が無いと言う意味です。
If gyo > 4 Then
Sheets("jyoken").Select
Range("A2").Select
Selection.Copy
Range(Cells(3, 1), Cells(gyo - 2, 1)).Select '複写先
ActiveSheet.Paste
End If

p.s.
提供データが無い場合(Sheets("提供データ")のD3がブランクの場合)は無いんですよね?
    • good
    • 0

Do Loopを抜けたときにgyoの値は、7327になっています。

したがって7327-1の7326行目までコピーされます。
7325行目までコピーするのなら、
Range(Cells(3, 1), Cells(gyo - 2, 1)).Select '複写先
これでいいかと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!