Excel VBA質問箱 IV

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

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


9783 / 13644 ツリー ←次へ | 前へ→

【25465】Findをループして、データを取得したのですが さくたん 05/6/1(水) 16:09 発言[未読]
【25467】Re:Findをループして、データを取得したの... つん 05/6/1(水) 16:25 回答[未読]
【25494】Re:Findをループして、データを取得したの... Jaka 05/6/2(木) 11:16 回答[未読]
【25496】Re:Findをループして、データを取得したの... さくたん 05/6/2(木) 11:49 お礼[未読]

【25465】Findをループして、データを取得したので...
発言  さくたん  - 05/6/1(水) 16:09 -

引用なし
パスワード
   いつもお世話になっています。
LOGからエクセルに変換したファイルのデータを検索するマクロを
作っています。

下記のように、マクロを組みました。
しかし、探すセルの中にデータが入っていない部分があり、
Set T1の部分がエラーになります。
どのように回避したらいいでしょうか?
ご教授ください。よろしくお願いいたします。

'●データが入力されている最終セル位置を取得●

Set myRng = Columns(1).Find(What:="*", After:=Range("A1"), _
      LookIn:=xlFormulas, SearchDirection:=xlPrevious)
  myR = myRng.Row
  myC = myRng.Column

'●テスト項目[(C…)]の個数を取得●
Set Rng = Range("A1", myRng)
myCnt = WorksheetFunction.CountIf(Rng, "=*(C*")

'●テスト項目[(C…から始まる]を取得●

Set TEST = Rows(1).Find(What:="(C", After:=Range("A1"), _
      LookIn:=xlFormulas, SearchDirection:=xlNext)
  TT_V = TEST.Value

TT_R = TEST.Row
TT_C = TEST.Column

For X = 1 To myCnt
  
  For Y = TT_R To myR
  
   Set T1 = Rows(1).Find(What:="(C", After:=Cells(Y, 1), _
       LookIn:=xlFormulas, SearchDirection:=xlNext)
  
   If Cells(Y, 1) Is Nothing Then
   Exit Sub
   End If
  
    TTV = T1.Value
    TTR = T1.Row
    TTC = T1.Column
    
   TestItem(i) = TTV & "_" & Cells(TTR, TTC + 1).Value
          
  Next Y
  
Next X

以上です。よろしくお願いいたします。

【25467】Re:Findをループして、データを取得した...
回答  つん E-MAIL  - 05/6/1(水) 16:25 -

引用なし
パスワード
   こんにちは^^

>下記のように、マクロを組みました。
>しかし、探すセルの中にデータが入っていない部分があり、
>Set T1の部分がエラーになります。
>どのように回避したらいいでしょうか?
>ご教授ください。よろしくお願いいたします。

えと、あまりちゃんとコードは見てないんですが、
Findメソッドで、ヒットしなかったときのエラー処理は、
ヘルプの使用例が参考になるかと思います。

With Worksheets(1).Range("a1:a500")
    Set c = .Find(2, lookin:=xlValues)
    If Not c Is Nothing Then
      firstAddress = c.Address
      Do
       c.Value = 5
       Set c = .FindNext(c)
      Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With

太字の部分

【25494】Re:Findをループして、データを取得した...
回答  Jaka  - 05/6/2(木) 11:16 -

引用なし
パスワード
   こんにちは。

>Set T1 = Rows(1).Find(What:="(C", After:=Cells(Y, 1), _
>       LookIn:=xlFormulas, SearchDirection:=xlNext)
確認はとってないけど、
検索範囲が1行目限定なのにA列の2行目3行目のから検索しろと言われてもねぇ!
検索範囲じゃない所から検索できないって事ですね!

もしかしたら、この辺を勘違いされているとか...
Cells(行,列)

After:=Cells(Y, 1)
 ↓
After:=Cells(1, Y)

【25496】Re:Findをループして、データを取得した...
お礼  さくたん  - 05/6/2(木) 11:49 -

引用なし
パスワード
   ▼つん さん:
ヘルプのところを見ました。
ちゃんとエラー回避が書いてありましたね。
しっかり実行されました。
ありがとうございました。

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