• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excelマクロについて)

excelマクロ 実行時の挙動について

このQ&Aのポイント
  • Excelマクロを実行した際に、特定の行に計算式がコピーされる理由と、その修正方法について教えてください。
  • 実行したマクロでは、Sheets("提供データ")のD列の7327行目が空白のにもかかわらず、Sheets("jyoken")のA列の7326行目に計算式がコピーされます。
  • また、Sheets("jyoken")のA列の2行目には"=提供データ!D3"という計算式が入っています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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 とかにした方が良いと思います。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

質問ではコードを長々と読まされたが、 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 これでたぶん実質同じではないの。 質問のエラー追及も必要なくなるのでは。 また内容は(プロシジュアー名の)式複写ではなく、式も値も書式も貼り付けますよ。

回答No.2

提供データが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がブランクの場合)は無いんですよね?

  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.1

Do Loopを抜けたときにgyoの値は、7327になっています。したがって7327-1の7326行目までコピーされます。 7325行目までコピーするのなら、 Range(Cells(3, 1), Cells(gyo - 2, 1)).Select '複写先 これでいいかと思います。

関連するQ&A