エクセル実行時エラー438の原因とは?

このQ&Aのポイント
  • エクセルの実行時エラー438が発生する理由は、セルに検索文字がないためか、文法が間違っているためかのどちらかです。
  • Sheets("シート1").Column("a").Find(What:="検索文字").Rowではエラーが発生しますが、Sheets("シート1").cells.Find(What:="検索文字").Rowでは検索文字が入っている行番号を返します。
  • なぜ.Column("a")やColumn(1)ではエラーが発生するのかはよく分かりません。
回答を見る
  • ベストアンサー

エクセル 実行時エラー 438

Sheets("シート1").Column("a").Find(What:="検索文字").Row で 実行時エラー 438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。 が発生する理由は、セルに検索文字がないからですか? それとも文法が間違っているからですか? Sheets("シート1").Column("a").Find(What:="検索文字").Row だとエラーになるのに、 Sheets("シート1").cells.Find(What:="検索文字").Row これだと検索文字が入ってる行番号を返します。 A列には、検索文字が入っているのに、 .Column("a")だとダメで、.cellsだと問題ない理由は何でしょうか? Column(1)にしてもエラーになります。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! >Column("a") を >Columns("a") としてみてください。 「s」がなければA列となりません。 >Sheets("シート1").cells.Find(What:="検索文字").Row の場合は A列限定ではなく、すべてのセルが対象となりますので、 「検索文字」がA列以外でもその行が表示されます。m(_ _)m

VLHTQXGWRCDFX
質問者

お礼

回答ありがとうございました。

関連するQ&A

  • VBA 見つからなかった時の処理

    VBAで検索した文字が見つかったら処理をしますが、 見つからなかったらエラーになります。 見つからなかった場合に何もしない様に変えていただけないでしょうか? Sheets("Sheet3").Range("A1") = _ Sheets("Sheet1").Cells.Find("あああ").Offset(1, 0)

  • エクセル マクロ実行時エラー’1004’

    For~Next構文内でシートコピーしていると途中で、 実行時エラー'1004’ WorksheetクラスのCopyメソッドが失敗しました。 が表示されることがあります。 該当のFor~Next文は10回以上実行されているので、コードの誤りではないと思うのですが、なぜ「Copyメソッドが失敗」するのかわかりません。 理由/対処方法がわかればありがたいと思い質問させていただきます。 **該当コード** Sub 評価シート作成()   Sheets(社員一覧).Select   行 = 1   Do     ReDim Preserve 社員CD(行)     ReDim Preserve 氏名(行)     社員CD(行) = Cells(行 + 1, 1).Value     氏名(行) = Cells(行 + 1, 2).Value     行 = 行 + 1   Loop Until Cells(行, 1) = ""   人数 = 行 - 2   For 回数 = 1 To 人数     Sheets(評価シート).Select     Sheets(評価シート).Copy after:=Sheets(評価シート)     ActiveSheet.Name = 氏名(回数)     Cells(4, 5) = 氏名(回数)     Cells(4, 3) = 社員CD(回数)   Next 回数 End Sub ***************************** よろしくお願いします

  • シートをオブジェクト変数に格納しつつ、findで文

    前回、http://okwave.jp/qa/q7965940.html で質問したのですが、 シートをオブジェクト変数に格納しつつ、findで文字を検索する場合、どうすればいいでしょうか? Sub test() Dim sh1 As Worksheet Dim 行 As Long Set sh1 = Sheets("Sheet1") 行 = Cells.Find(What:="検索文字", LookAt:=xlWhole).Row End Sub こういう事を行いたいのですが、 Sheet2がアクティブな時にこのコードを実行すると実行時エラー91になります。 対処方法をお願いいたします。

  • vlookupプロパティで実行時エラーが出る

    vlookup関数をマクロで行いたいと思っており、ネットで調べながらコードを書いております。 違うシート間でうまくいったコードをコピーし、変数等を直して実行してみたところ1004の実行時エラーが出てしまいます。 ソースシートをデータの範囲元とし、シート内にあるI8から始まるデータについて、vlookupをしたいのですが、vlookupプロパティの実行時にエラーが出ます。 範囲指定も検索値についても値が入っており、何が問題かわかりかねており困っております。 ソースシート = "KW_All" 'ソースシートの範囲定義 ソース上 = 8 ソース左 = 5 ソース右 = 5 ソース下 = Sheets(ソースシート).Range(Sheets(ソースシート).Cells(8, 5), Sheets(ソースシート).Cells(8, 5)).End(xlDown).Row シート = "Keyword" 'keywordシートの範囲定義 上 = 3 左 = 1 右 = 9 下 = Worksheets(シート).Range(Worksheets(シート).Cells(上, 左), Worksheets(シート).Cells(上, 左)).End(xlDown).Row keyword数 = 下 - 上 + 1 Set 範囲 = Sheets(ソースシート).Range(Sheets(ソースシート).Cells(ソース上, ソース左), Sheets(ソースシート).Cells(ソース下, ソース右)) For i = 1 To keyword数 検索値 = Sheets(シート).Range("I" & 上 + i - 1) Range("J" & 上 + i - 1) = Application.WorksheetFunction.VLookup(検索値, 範囲, 1, False) Next どうぞご教授くださいますと幸いです。

  • 1列目の何行目に検索文字があるかを取得したい

    しかしエラーになってしまいます。 エラーの原因がわかりません。 シートの1列目のどこかに「test」と入っている行があるのですが Sub test1() Dim myRow As Long With Sheets("Sheet") myRow = .Column(1).Find(What:="test").Row MsgBox .Cells(myRow, 1) End With End Sub このvbaコードを実行するとエラーになります。 コードとしては「.Column(1)」で1列目と言う意味で、 .Find(What:="test")で、何行目に「test」があるかを取得するという意味だと思うのですが 実行時エラー438が発生します。 実際にtestと言う文字は2行目にあるのですが なぜmyRowに2が代入されないのでしょうか?

  • エクセル マクロ:部分一致検索

    教えてください。 sheet1のA列に時間データがあります。A列は書式設定でhh:mm:ss.00にしています。 sheet2のA1に時間を表示しており書式設定でhh:mm:ssにしています。 sheet2のA1と部分一致する時間を、sheet1のA列から検索するマクロを作成しています。 (複数ある場合は初めに該当するセルの行を表示) sheet2に下記のコードを入力しており、実行すると「オブジェクト変数またはwithブロック変数がされていません」と表示され困っています。 ご教授のほどよろしくお願い致します。 Sub 検索() Dim Jikan As Date Dim Row1 As Integer Jikan = Sheets("sheet2").Cells(1, 1).Value Row1 = Sheets("sheet1").Range("A:A"). _ Find(What:=Jikan, LookAt:=xlPart).Row MsgBox Row1 End Sub

  • エクセルVBAで実行時エラー 91 が出ます

    エクセル2000です 各部署の棚卸を纏める為のVBAを作成しているのですが、実行時にエラーになってしまいます エラーメッセージは 「実行時エラー 91   オブジェクト変数またはWithブロック変数が設定されていません」 です ご教授お願いいたします Sub 棚卸() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("在庫集計票") Set sh2 = Worksheets("棚卸表") x = sh2.Range("A65536").End(xlUp).Row Z = sh1.Range("d2").Value ’部署番号 sh1.Range(Cells(5, Z), Cells(3000, Z)).ClearContents For i = 2 To x y = sh1.Range("A2:A" & Range("A2").End(xlDown).Row). _ Find(sh2.Cells(i, "a")).Row ’ここでエラーが発生します sh1.Cells(y, Z) = sh2.Cells(i, "c") Next i End Sub

  • VBA 実行時エラー91がでてしまいます。

    請求書を作成する課題をしているのですが、実行時エラー91がでてしまいます。 売上シートにある受注番号セルに受注番号をを入力し、実行ボタンをおすとその受注番号とその列の受注日、宛名を請求書シートに表示させる課題です。 Private Sub 請求書作成ボタン_Click() Dim 売上, 請求書, 受注番号, 宛名, 受注日, 行 Set 売上= Sheets("売上") Set 請求書 = Sheets("請求書") 受注番号= 売上.Cells(2, 10) 請求書.Cells(8, 6) = 受注番号 行 = 売上.Range("A1,A31").Find(受注番号).Row  宛名 = 売上.Cells(行, 3)  請求書.Cells(3, 1) =宛名  受注日= 売上.Cells(行, 2)  請求書.Cells(9, 6) = 受注日 End Sub

  • EXCEL VBAのFind について

    VBAで、特定の文字が入っているセル位置(結合セル)を取得したく、 シートのコード記述で --- Private Sub Worksheet_Change(ByVal Target As Range) Dim w_CelObj As Object Set w_CelObj = ActiveSheet.Cells.Find(What:="あああ", LookAt:=xlWhole, MatchByte:=False) MsgBox w_CelObj.Row MsgBox Cells.Find(What:="いいい").Row End Sub ----- と記述し、"aa"も"bb"もどちらの方法でも取得できました。 ですが、これを別のEXCELブック(既にシートがたくさんあり、コードもびっしり記述してあります)で同様のことを行おうとするとエラーになってしまいます。 ※新しいシートを作成し、そのシートにコードをコピーして試しました。 セルの結合を解除すると正常に取得できるのですが、結合セルだとFindされてきません。 調べてみましたが、「Cells.Find」ときちんとセル全体を指定していれば大丈夫のようで、同様の事例を検索できませんでした。 他に何を調べればよいでしょうか? ご協力よろしくお願いします。

  • VBAで実行時エラー1004が出ます

    VBAで実行時エラー1004が出ます。 「Rangeメソッドは失敗しました。Worksheetオブジェクト」です。 あらゆる可能性を調べたのですが、分かりません。誰か教えて頂けますでしょうか? 下記コードの「Cells(m, 7) =・・・」の部分がエラーになりました。 Sub ボタン1_Click() Dim 現シート As Worksheet ~ 現シート.Activate Cells(m, 7) = WorksheetFunction.VLookup(現シート.Range(現シート.Cells(m, 4)).Select, 現シート.Range(現シート.Cells(4, 104), 現シート.Cells(15, 107)).Select, 4, False) ~ End Sub 何卒宜しくお願いいたします。

専門家に質問してみよう