|
クロリン さん、こんばんわ。
>”2”を検索するたびに下記作業をDo Loopで作業するマクロなんですが、"2"がなくなると
>『実行時エラー'91':
> オブジェクト変数またはWithブロック変数が設定されていません。』
>と出てしまいます。
エラー原因はここと同じですね(最近のツリーですが)。
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=27577;no=27583;id=excel
>初心者なので詳しいことが分からずすみません。
>その他アドバイスありましたら合わせてよろしくお願いいたします。
普通についてくるヘルプのFindメソッド(FindNextメソッド)の使用例を見れば、エラーにならずにループする方法が書いてあります。
Sub 場合再現2()
Dim c1 As Range, ca As String, II As Integer
With Workbooks("T_月次細分別マスタ.xls")
.Activate '
With .Worksheets("2.")
.Activate '
'一つ目検索(部分一致?)
Set c1 = .Columns("cw:cw").Find(what:="2", LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, MatchByte:=False)
'Findメソッドの使い方をそのまま使用(変数のみ一部変えてあります)
If Not c1 Is Nothing Then '一つ目がみつかったら
ca = c1.Address
Do
RR& = c1.Row '行番号取得
'Bk列 to Bv列
For II = 63 To 74
With .Cells(RR&, II)
'縦に拡張したRangeの合計値を直接セルに入れる(ワークシート関数使用)
.Value = Application.WorksheetFunction.Sum(.Resize(2, 1))
End With
Next
.Rows(RR& + 1).Delete '一つしたの行を削除
c1.ClearContents '消去
'
Set c1 = .Columns("cw:cw").FindNext(c1) '次を検索
Loop While Not c1 Is Nothing
End If
End With
End With
End Sub
ActiveとかSelectをはずしていくとこんな感じです。
行の挿入は、数値計算用の一時使用のようなので、直接計算値をセルに入れました。
|
|