![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
お世話になります。
[変更前]マクロで「("A3:B72")」を変数化したくて[変更後]のようにした。 結果エラーになります。
実行時エラー'91'
オブジェクト変数またはWithブロック変数が設定されていません。
[変更前]
Sub 賞与明細MCR()
Range("A3:B4").Select
Selection.AutoFill Destination:=Range("A3:B72"), Type:=xlFillDefault
Range("A3:B72").Select
End Sub
[変更後]
Sub 賞与明細MCR()
Dim 処理 As Characters
処理 = "A3:" & CStr(Range("d1"))
Range("A3:E4").Select
Selection.AutoFill Destination:=Range(処理), Type:=xlFillDefault
Range(処理).Select
End Sub
No.1ベストアンサー
- 回答日時:
今一つ違うかも知れませんが。
Range("A3:B4").Select
Selection.AutoFill Destination:=Range("A3:B72"), Type:=xlFillDefault
Range("A3:B72").Select
これを、
Dim i As Long
i = Range("D1").Value
If i < 5 Then Exit Sub
Range("A3:B4").AutoFill Destination:=Range("A3:B" & i), Type:=xlFillDefault
こうしたいと言うことですか?
No.2
- 回答日時:
VBAのデータ型でCharactersってありましたっけ。
宣言文ではエラーにならないので、OKなのかも知れませんが、これを実行すると、値を代入しようとする次の行でエラー91が発生しますので、これが原因だと思われます。
Dim文での宣言を CharactersからStringに修正すれば問題なくなると思いますが・・・
Dim 処理 As String
また、d1セルで指定する範囲が悪いと、AutoFillメソッドの失敗のエラーになります。
いらぬお節介かも知れませんが、エクセルの操作ではオートフィルは一般的ですが、マクロで範囲に入力する場合はループで処理するほうが一般的かと思います。
具体的には、A3:E4に代入する処理を一般化したものにしておいて、処理したい範囲について以下のような処理を行うという方法です。
For i=start_row To end_row
For j= start_col To end_col
cells(i,j).value=***** '*必要とする処理
next j
next i
変更後のコードにも誤りがありました。
処理 = "A3:" & CStr(Range("d1")) は処理 = "A3:E" & CStr(Range("d1"))
Cstr(数値から文字への変換)も不要のようですね
次のようにして、解決です。
Sub 賞与明細MCR()
Range("A3:E4").Select
Selection.AutoFill Destination:=Range("A3:E" & Range("D1")), Type:=xlFillDefault
Range("A4").Select
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) エクセル VBA 条件付き書式 簡略化したい 2 2022/06/02 17:46
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Visual Basic(VBA) EXCELのVBAについて 2 2023/07/05 17:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
StatusStripの表示が更新されな...
-
以下マクロの処理を最終行まで...
-
IF文に時間(何時から何時ま...
-
条件文でelseはつけるべき?
-
private subモジュールを他のモ...
-
マクロで、次のコードへ行く前...
-
vbaのエラー対応(実行時エラー...
-
変数を使用したFunctionから戻...
-
ExcelのVBAで、選択したファイ...
-
クエリならできるのにVBAだとエ...
-
Excel VBA セルの名前があるか...
-
VB6にてネットワーク上にある共...
-
EXcelでオートフィルのパラメー...
-
バッチファイルでのエラー処理...
-
どう増強すべきか
-
VBA フォルダ内の全てブックの...
-
シグナル 6(SIGABRT)とは?
-
どうやってもFor文を抜けてしま...
-
特定のファイルを他のプロセス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
IF文に時間(何時から何時ま...
-
vbaのエラー対応(実行時エラー...
-
private subモジュールを他のモ...
-
マクロで、次のコードへ行く前...
-
どう増強すべきか
-
特定の名前のオートシェイプの...
-
シグナル 6(SIGABRT)とは?
-
Excel VBA セルの名前があるか...
-
ExcelのVBAで、選択したファイ...
-
どうやってもFor文を抜けてしま...
-
シェルスクリプトでファイル内...
-
ドリブン??
-
特定のファイルを他のプロセス...
-
VB6にてネットワーク上にある共...
-
【VBA】エラー処理で別プロシー...
-
Functionで戻り値を複数返す方法
-
Word VBA。各マクロの間に待ち...
-
エクセル VBAで複数セル選択時...
-
VBA 複数の行を高速で削除する...
おすすめ情報