[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『実行エラー91 オブジェクト変数withブロック変数が設定されていないと言うエラーメッセージが出ます。』(早苗)
Sub test2()
Dim myD As String, r As Range
With Sheets("Sheet1")
myD = Format(Date, "yy/mm")
Set r = Sheets("Sheet1").Columns(1).Find(myD, LookIn:=xlValues)
Selection.AutoFill _
Destination:=.Range( _
Selection, Selection.Offset( _
Cells(r.Row, 1).Row - _
Selection(Selection.Count).Row, 0 _
) _
)
End With
End Sub
A列に日付が入力されております。
B,C,D,E,F,G各列にはデータが入力されております。
B列からG列の一行を選択しマクロを実行すれば、
A列の今日の日付までB列からG列の一行の同じデータが下方向(今日の日付)
まで繰り返し入力されるようなコードを書きましたが、
実行エラー91 オブジェクト変数withブロック変数が設定されていないと言うエラーメッセージが出ます。どう書き加えればよいのでしょうか?
< 使用 Excel:Excel2019、使用 OS:Windows11 >
想像するに、こんなことかな?
※元表だとする
|[A] |[B] |[C] |[D] |[E] |[F] |[G]
[1]|日付 |項目1|項目2|項目3|項目4|項目5|項目6
[2]|23/03|data1|data2|data3|data4|data5|data6
[3]|23/04| | | | | |
[4]|23/05| | | | | |
[5]|23/06| | | | | |
[6]|23/07| | | | | |
B2 : G2を選択したとして、マクロ実行 上記が↓下のように、になれば良いのでしょうか?
|[A] |[B] |[C] |[D] |[E] |[F] |[G]
[1]|日付 |項目1|項目2|項目3|項目4|項目5|項目6
[2]|23/03|data1|data2|data3|data4|data5|data6
[3]|23/04|data1|data2|data3|data4|data5|data6
[4]|23/05|data1|data2|data3|data4|data5|data6
[5]|23/06| | | | | |
[6]|23/07| | | | | |
※A列の表示形式は、yy/mm
Sub Sample()
Dim myD As String, r As Range
Dim i&, q&
With Sheets("Sheet1")
myD = Format(Date, "yy/mm")
Debug.Print myD: Stop '' 23/5
i = Selection(Selection.Count).Row
Debug.Print i & "行目選択": Stop
Set r = Sheets("Sheet1").Columns(1).Find(myD, LookIn:=xlValues)
q = r.Row
Debug.Print q & " Find : 行"
Stop
.Range(.Cells(i, 2), .Cells(i, 7)).AutoFill _
Destination:=.Range(.Cells(i, 2), .Cells(q, 7))
End With
End Sub
作りたいマクロと意図が違ったら、他の回答者に聞いてください。 出かけますので。(〃∇〃)ゞ
※因みに、debug.print ってご存じですか?
マクロは、途中で何度かストップするので debug.print を見て確認してください。
もし、解らなければ調べてください。 検索 : debug.print VBA
[玄関] λ…………トボトボ (あみな) 2023/05/01(月) 15:44:42
まず現状把握しましょう。 検索はできているのですか? エラーになったとき、rがNothingになっているということはないですか? A列のデータおよびその表示形式を説明されたらいかがですか? そうすれば、回答が寄せられると思います。 (xyz) 2023/05/01(月) 17:21:00
■1
>A列の今日の日付まで
A列に↓が入っているならそれは【日付】ではありません。
myD = Format(Date, "yy/mm")
また、実際には【日付(シリアル値)】が入っているならば上記の"文字列"では正しく評価できませんし、Findメソッドで日付を扱うには癖がありますので難易度たかめです。
なので、A列には正確には何がはいっているか提示してください。
■2
↓のようにFindメソッドを使って【セル】を探していますが、見つからなかった場合は「r」にNothingが格納されますので対策をしておいたほうがよいでしょう。
Set r = Sheets("Sheet1").Columns(1).Find(myD, LookIn:=xlValues)
■3
>B列からG列の一行を選択しマクロを実行すれば〜
あんまり「Selection」に依存したコードはお勧めしませんが、例えば↓のように段階的に処理するようにしてみれば原因分析しやすいのではないでしょうか?
Sub test2_改()
Stop ' ブレークポイントの代わり
Dim r As Range, 始行 As Long, 終行 As Long
With Sheets("Sheet1")
Set r = .Columns(1).Find(Format(Date, "yy/mm"), LookIn:=xlValues)
If r Is Nothing Then
MsgBox "A列を検索しましたが【" & Format(Date, "yy/mm") & "】を発見できませんでした"
Else
始行 = Selection.Row
終行 = r.Row
With Cells(始行, "B").Resize(, 6)
.AutoFill Destination:=.Resize(終行 - 始行 + 1)
End With
End If
End With
End Sub
(もこな2 ) 2023/05/01(月) 17:29:06
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.