Aの最終行を参照してU列を最終行までコピーするマクロです。
もしA列が1行しかない場合エラーを無視させたいのですがエラーが出ます。
※2回目以降はエラーを無視してくれるようになります。
どうすれば1回目実行したときからエラーを解消することができますか?
'式の結果を一番下(変数)までコピー
On Error Resume Next
Dim LastRow As Long
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
Range("U2").AutoFill Destination:=Range("U2:U" & LastRow)
On Error GoTo 0
Selection.Copy
ActiveSheet.Paste
No.2ベストアンサー
- 回答日時:
こんにちは
On Error~~はエラー処理をするための構文で、エラーを無視するためのものとは思わない方が良いです。
「発生したエラーを無視する」という考え方は、正しく動作するプログラムを作成する大きな妨げになると思います。
わかっているエラーであれば、No1様の回答のようにエラーが発生しないようにするのがよろしいかと。
なさりたいことがはっきりとはわかりませんが、
>Range("U2").AutoFill Destination:=Range("U2:U" & LastRow)
では、U2セルの値と同じ値をU列に代入なさりたいのでしょうか? それともオートフィル?
…というのも、U2セルに「9/25」などの日付が入っていると、AutoFillメソッドを使用すると、以下9/26、9/27・・・のようになります。
このような機能も含めて利用するおつもりなら良いのですが、「まったく同じ値を代入したい」という意図であれば
対象セル範囲.Value = Range("U2").Value
のような記述法の方が確実だと思います。
(実際の意図が不明なのでわかりませんが…)
さて、AutoFillの場合、対象とするセル範囲が元となるセル範囲より大きくないとエラーになるようです。
意味的には、範囲は同じでもよさそうな気はしますが(実際には何もしない)、MSの仕様のようで、同じ範囲ではエラーになるようですね。
それなので、
>Range("U2").AutoFill Destination:=Range("U2:U" & LastRow)
が実行されるためには、LastRowが正の値で2以外であることが必要になります。
実際には、1行目のタイトル行にコピーすることはないでしょうから、結果的に、LastRow>2であることのチェックを事前に行えばよいことになります。
例えば、
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
If LastRow < 3 Then Exit Sub
Range("U2").AutoFill Destination:=Range("U2:U" & LastRow)
とか。
AutoFillを利用しない方法であれば、
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
If LastRow < 3 Then Exit Sub
Range("U2:U" & LastRow).Value = Range("U2").Value
とか。
ついでながら、最後の2行
>Selection.Copy
>ActiveSheet.Paste
は意図的にいれているのでない限り意味はないと思いますので、削除してもよろしいかと。
No.1
- 回答日時:
>もしA列が1行しかない場合エラーを無視させたいのですがエラーが出ます。
までわかっているのであれば
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
If LastRow=1 Then Exit Sub
ではダメでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) エクセル VBA 難しいです 1 2023/02/21 15:39
- Excel(エクセル) R列の1111/11/11以外、且つQ列の×の条件で該当行のAからAE列までオレンジに塗りつぶす 2 2022/07/02 10:18
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) 【至急】Excel 同一人物の情報を一行にまとめる(複数行) 6 2022/05/24 17:58
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
マクロで"#N/A"のエラー行を削...
-
VBA データ(特定値)のある最...
-
【VBA】ワークブックを開く時に...
-
実行時エラー'-2147467259(8000...
-
VBAでfunctionを利用しようとし...
-
エクセル関数式=ABSで#VALUE!...
-
F9キーを実行するVBスクリ...
-
文字列内で括弧を使うには
-
Excel VBA のFunctionプロシー...
-
パスワード確認画面について
-
ADO 「認証に失敗しました」
-
エクセルVBA 「On Error GoTo...
-
Excel vbaについての質問
-
VBAでのファイル読込エラー...
-
シェルの引数の入力チェックを...
-
【ACCESS】オートナンバー振り...
-
マクロの「SaveAs」でエラーが...
-
VB2010でデータグリッドビュー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
マクロで"#N/A"のエラー行を削...
-
VBAでfunctionを利用しようとし...
-
文字列内で括弧を使うには
-
実行時エラー 438 の解決策をお...
-
エクセル関数を教えてください
-
On ErrorでエラーNoが0
-
お助けください!VBAのファイル...
-
VBA データ(特定値)のある最...
-
【VBA】ワークブックを開く時に...
-
インポート時のエラー「データ...
-
実行時エラー'-2147467259(8000...
-
マクロの「SaveAs」でエラーが...
-
WindowsでのPythonの挙動について
-
ApplicationとWorksheetFunctio...
-
Excel vbaについての質問
-
エクセルVBA 「On Error GoTo...
-
Filter関数を用いた結果、何も...
-
ACCESSで値を代入できないとは?
おすすめ情報
すみません若干訂正があります。
1行目は見出しで2行目のA列以降を参照する感じです。
なので2行目しかない場合にエラーが出てしまうのですがそれを無視をしたいです。
ご教授頂いたコードで出来ますでしょうか?(><)すみません、まだ確認できてないです。明日確認予定です。。。