Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


53671 / 76738 ←次へ | 前へ→

【27876】Re:またまた教えてください!
回答  りん E-MAIL  - 05/8/22(月) 20:40 -

引用なし
パスワード
   クロリン さん、こんばんわ。

>”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をはずしていくとこんな感じです。
行の挿入は、数値計算用の一時使用のようなので、直接計算値をセルに入れました。

0 hits

【27866】またまた教えてください! クロリン 05/8/22(月) 17:25 質問
【27876】Re:またまた教えてください! りん 05/8/22(月) 20:40 回答
【27913】Re:またまた教えてください! クロリン 05/8/24(水) 9:07 お礼
【27880】Re:またまた教えてください! ちくたく 05/8/23(火) 9:07 発言
【27914】Re:またまた教えてください! クロリン 05/8/24(水) 9:09 お礼

53671 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free