Excel VBA質問箱 IV

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

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


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

【22028】エラー242 オブジェクトが必要です ぐっさん 05/2/7(月) 15:27 質問[未読]
【22032】Re:エラー242 オブジェクトが必要です IROC 05/2/7(月) 16:14 回答[未読]
【22033】Re:エラー242 オブジェクトが必要です sa 05/2/7(月) 16:50 発言[未読]
【22048】Re:エラー242 オブジェクトが必要です ぐっさん 05/2/7(月) 20:30 お礼[未読]
【22066】Re:エラー242 オブジェクトが必要です sa 05/2/8(火) 9:15 発言[未読]
【22071】Re:エラー242 オブジェクトが必要です ぐっさん 05/2/8(火) 10:49 お礼[未読]

【22028】エラー242 オブジェクトが必要です
質問  ぐっさん  - 05/2/7(月) 15:27 -

引用なし
パスワード
   こんにちわ。
下記はあるエクセルファイルを整形するマクロなのですが
エラー242 オブジェクトが必要ですというエラーが
でたりでなかったりでうまく動作しません。エラーがでる行
は15行目の2つ目の「If c.Value Like "*" & fndkey2 & "*" Then Rows(c.Row).Delete Shift:=xlUp」です。
どなたかご教授お願いいたします。


Sub test()

Dim c As Variant

Dim rng As Range
Dim myadd As String
  
  Workbooks.Open Filename:="book1.xls"
  
  '特定の文字列を含む行を削除
  '削除する文字を指定
  
  fndkey1 = "名前"
  fndkey2 = "日付"
  fndkey3 = "vssver.scc"
  
  
  For Each c In Sheets(1).Range("a1:a6000")
    
    '行削除
    If c.Value Like "*" & fndkey1 & "*" Then Rows(c.Row).Delete Shift:=xlUp
    If c.Value Like "*" & fndkey2 & "*" Then Rows(c.Row).Delete Shift:=xlUp
    If c.Value Like "*" & fndkey3 & "*" Then Rows(c.Row).Delete Shift:=xlUp
        
  Next
  
  
  'ファイル名以外を削除する

  'ファイル名以前を削除
  Set rng = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
  myadd = rng.Address
  sushiki = "=if(iserror(FIND(""AB""," & myadd & "))," & _
        "if(" & myadd & "="""",""""," & myadd & ")," & _
        "MID(" & myadd & ",FIND(""AB""," & myadd & "),LEN(" & myadd & ")))"


  ' ファイル名以降を削除
     Set rng = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
     myadd = rng.Address
     sushiki = "=if(iserror(FIND(""Date""," & myadd & "))," & _
          "if(" & myadd & "="""",""""," & myadd & ")," & _
          "substitute(" & myadd & _
          ",MID(" & myadd & ",FIND(""Date""," & myadd & "),LEN(" & myadd & ")),""""))"
 
        
   Debug.Print sushiki '数式を確認して下さい
   rng.Value = Evaluate(sushiki)

  ActiveWorkbook.Save
  
End Sub


【22032】Re:エラー242 オブジェクトが必要です
回答  IROC  - 05/2/7(月) 16:14 -

引用なし
パスワード
   エラー発生時の各値や変数の中身について調べてみましたか?

【22033】Re:エラー242 オブジェクトが必要です
発言  sa  - 05/2/7(月) 16:50 -

引用なし
パスワード
   Rows(c.Row).Delete Shift:=xlUpで 
cがオブジェクトですそれをDeleteしているので
次のifでは、オブジェクトがないのです
3つのifを1つのif文にしたら
そのERRORはでないと思いますが
Rows(c.Row).Delete Shift:=xlUpすると
行数が変わるので
行番の大きい方から見ていった方がいいと思います


▼ぐっさん さん:
「If c.Value Like "*" & fndkey & "*" Then Rows(c.Row).Delete Shift:=xlUp」です。

【22048】Re:エラー242 オブジェクトが必要です
お礼  ぐっさん  - 05/2/7(月) 20:30 -

引用なし
パスワード
   ▼sa さん:IROCさん

回答ありがとうございました。
3つのifを1つにする方法は
わからなかったのですがそれぞれFor文を
わけることでうまく動作することができました。

また何かありましたらご教授お願いいたします。

【22066】Re:エラー242 オブジェクトが必要です
発言  sa  - 05/2/8(火) 9:15 -

引用なし
パスワード
   ▼ぐっさん さん:
3つのifを1つにする方法
すみません説明悪かったかもしれません

If(条件1)Then(処理1)
If(条件2)Then(処理2)
If(条件3)Then(処理3)
 
    ↓

If(条件1)Then
 (処理1)
ElseIf(条件2)Then
 (処理2)
ElseIf(条件3)Then
 (処理3)
Endif 

と言う意味でした

>▼sa さん:IROCさん
>
>回答ありがとうございました。
>3つのifを1つにする方法は
>わからなかったのですがそれぞれFor文を
>わけることでうまく動作することができました。
>
>また何かありましたらご教授お願いいたします。

【22071】Re:エラー242 オブジェクトが必要です
お礼  ぐっさん  - 05/2/8(火) 10:49 -

引用なし
パスワード
   ▼sa さん:

わかりやすいご説明ありがとうございます。
うまく動作することができました。
また何かありましたら質問させていただきますので
よろしくお願い致します。

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