fumufumu_2006 の回答履歴

全466件中61~80件表示
  • ExcelVBA Findメソッドで検索のスタート位置について

    おせわになっております。 Findメソッドを用いて、先頭から順に値を検索しようとしています。 Set rngSearch = rngList.Find("ゴルフ", rngSearch, , xlPart) ↑ このような方法で、該当するものを一つ一つ探そうとしています。 つまり、仮に一列目で見つかったら、次は二列目以降から探そうと しています。 FindNextなどを使用しないのは、連続で求めるためではなく、 ボタンを押したときに一つずつ検索するからです。 しかし、この書式ではスタート地点にした、次のセルから検索する はずが、スタート地点に指定したセルから検索してしまい、 何度行っても同じセルばかりを検索して返してしまいます。 Offsetなどで一行ずつずらしても、同じ場所からしか検索が 始まりません。 これはなぜなのでしょうか? 念のため、他のメソッドなどでは決してrngSearch は代入等の 操作はしておりません。 ちなみに、同じメソッドの中で同じ書式を繰り返すと   Set rngSearch = rngList.Find("ゴルフ", rngSearch, , xlPart) MsgBox rngSearch.Value   Set rngSearch = rngList.Find("ゴルフ", rngSearch, , xlPart) MsgBox rngSearch.Value   Set rngSearch = rngList.Find("ゴルフ", rngSearch, , xlPart) MsgBox rngSearch.Value   Set rngSearch = rngList.Find("ゴルフ", rngSearch, , xlPart) MsgBox rngSearch.Value   … うまくいくようなのです。一度でもメソッドを抜けるとうまくいか なくなるような感じです。 以上、わかりづらい説明で大変申し訳ありませんが、なにとぞお願い 致します。

  • ExcelVBA:列方向の並び替え Orientation

    いつも大変お世話になります。初心者です。 長文で申し訳ありませんが、私の間違いについてご指導をお願いします。(Excel2003) 並び替えについて訳が分からなくなってしまいました。現状は、 ・A2セル=1月、A3=2月、A4=3月、A5=合計 ・B1セル=札幌、C1=東京、D1=名古屋、E1=大阪 ・B2:E4 は売上金額です。 ・B5 は、SUM(B2:B4) です。C5~E5も同様です。 ※売上合計は多い順に、東京、大阪、名古屋、札幌です。 この表の合計金額を並び替えをしたいと思い、以下を書いてみました。 左から順に、売上合計の多い支社順に、並ばせようとしました。 Cells(1, 1).CurrentRegion.Sort _ key1:=Cells(5, 1), order1:=xlDescending, Orientation:=xlSortColumns, header:=xlYes 【甲】 すると全く意図した形ではない並び替えが実行されてしまいました。 (なぜか行が入れ替わり、列は変わらず。) 【乙】 しかし、上のOrientationを、xlSortRows に変えてやってみると、意図した通りに並び替えられました。 【丙】 また、Order1:=xlAscending, Orientation:=xlSortRows でやってみると、列の並び替えは実施されますが、 月の見出し列(A1~A5)が一番右に移動してしまいます。 -------------------------------------------------------------------------- その後いろいろ調べたり、試行したりしたのですが疑問が山積してしまいました。 基礎的な話かもしれませんが、上記の例で、「列方向に、合計金額を基準に、正しく降順・昇順並び替え」をしたいと思っています。 【質問1】Sortメソッドのヘルプで見ると、Orientation の説明に、xlSortRows,xlSortColumnsの説明がありますが、 行方向、列方向、どうしても実際の動きと逆な気がしてなりません。 私の勘違いでしょうか。 【質問2】マクロの自動記録時に気づいたのですが、Orientation の設定に、xlLeftToRight や、xlTopToBottom というのが使われていました。 これらと xlSortRows, xlSortColumns の違いはありますか。 【質問3】列方向への並び替えの際には、Headerの設定をするのは無意味ですか? 上記(丙)のパターンで、xlGuess でも、xlYes 、xlNo でも全く動きは変わらず、月の見出し列が最右に移動しました。 【質問4】上の(丙)のパターンで正しく動かす為には、Sort の対象となる範囲を、B列以降にする必要があるのでしょうか。 ---------------------------------------------------------------------------- 分かりにくい箇所もあったかと思いますが、ご指摘いただければ補足させていただきます。 なお、「そんな簡単な表だったら、手で作業したら?」ということではなく、後学のために知っておきたいので質問させていただきました。 なにぶん勉強中なため見当外れの質問もあるかもしれませんが、なにとぞご教示よろしくお願いいたします。

  • 教えて下さい。VBAマクロで困ってます。

    VBAマクロ初心者です。実は、次のようなコードをどのように書けばよいのか教えて下さい。 例えば、 Aは、デスクトップ上のエクセルファイルの"Sheet1"のA1:B4のA列は数値、B列は文字列。 Aをデスクトップ上の別のフォルダーにあるエクセルファイルの"Sheet1"のA1:B4にデータをコピーをするのですが・・・。まったくわかりません。または、説明が下手でやりたい事が伝わらないかもしれませんが、よろしくお願いいたします。

  • AccessのSQL文 検索

    お世話になります AND検索でBetween検索とテキストでAND検索をさせているのですが ■不具合 下記のSQLのままだとすべての場所を満たさないと検索できません たとえば開始日~終了日だけなら絞込できません テキストを入力すると初めて絞込みをします ■たぶん たぶん下記SQL文にどちらかNULL値の場合をスルーさせる文章を追加させなければならないと思います WHERE (((B.番号)=[Forms]![Search]![テキスト]) AND ((B.D日付) Between [Forms]![Search]![txtDTPicker0] And [Forms]![Search]![txtDTPicker1])) ORDER BY B.D日付; わかる方よろしくお願いします

  • AccessのSQL文 検索

    お世話になります AND検索でBetween検索とテキストでAND検索をさせているのですが ■不具合 下記のSQLのままだとすべての場所を満たさないと検索できません たとえば開始日~終了日だけなら絞込できません テキストを入力すると初めて絞込みをします ■たぶん たぶん下記SQL文にどちらかNULL値の場合をスルーさせる文章を追加させなければならないと思います WHERE (((B.番号)=[Forms]![Search]![テキスト]) AND ((B.D日付) Between [Forms]![Search]![txtDTPicker0] And [Forms]![Search]![txtDTPicker1])) ORDER BY B.D日付; わかる方よろしくお願いします

  • VBAで一定期間の名簿を検索、抽出できますか?

    お世話になっております。皆さんよろしくお願いします。 Aという名前のエクセルファイルのsheet1に次のような名簿が入力してるとします。   A     B    C     D 1 申請日  名前   住所  電話番号 2  4/1   甲   東京   00-0000 3  4/2   乙   大阪   11-1111 4  4/3   丙   京都   22-2222 ・  4/3   虎   北海道  33-3333    ・  ・    ・   ・     ・ こういう名簿が3000件くらいあります。申請日は一件しかない日もあれば、数百件ある日もあります。また、申請日は一概に4/1から順になっていないところもあります。 この名簿を他のBというエクセルファイルに指定した期間ごとに抽出したいと考えています。 例えば、Bファイルのsheet1に、   A     B    C     ~  G 1 4/3    4/4   4/5    ~  4/9 と一週間分を入力し、コマンドボタンを押したら、Bファイルのsheet2 に、   A     B    C     D 1 申請日  名前   住所  電話番号 2  4/3   大田   京都   22-2222   3  4/3   佐藤   北海道  33-3333    ・  ・    ・    ・    ・ ・  ・    ・    ・    ・ 11  4/9    山田   愛知  44-4444    できたら嬉しいのですが、できるのでしょうか?どなたかお知恵をお貸しください。 よろしくお願いします。

  • Excel VBAでグラフをクリックした時走るイベントありますか?

    Excel VBAで既存のグラフをクリックした時、その選択されたグラフを編集するソフトを作りたいのですが、グラフをクリックした走るイベントはありませんか? イベントさえわかれば処理の書き方はわかります。

  • Excelで最大値と最小値を記録したい

    Excelを使って仕事をしています。 データ通信で接続していて、たくさんのセルに温度・圧力・流量などのデータが刻々入ってきます。 このデータを10分区切りで最小値、最大値を記録したのですがうまくゆきません。 現在は10分区切りの瞬間の値だけを記録していますが、データの意味を最大限活用したくて最小値と最大値を記録したいのです。 どなたか知恵をお貸しください。

  • VBA実行中にFormの出現

    表題の件について質問します。 ExcelVBAでモジュールを実行する際に、 処理時間が長いため、処理中は前面にForm(ダイアログ等)を 出現させたいと思っています。 方法が分かる方、ご指導下さい。 また、Formに処理状況を%表示させたいのですが、 標準モジュールとFormを同時起動させた状態での変数受け渡しは ExcelVBAで可能でしょうか? 初心者なので、お手柔らかにお願い致します。

  • マクロの記録で作ったルーチンが動きません

    EXCEL2002で「マクロの記録」を使ってこんなマクロを作りました。 <マクロ> Sub Macro1() Sheets("ABC").Select Sheets("ABC").Copy Before:=Sheets(1) Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("ABC").Select Application.CutCopyMode = False ActiveWindow.SelectedSheets.Delete End Sub これをコマンドボタンの押下に組込、こんなサブルーチンにしました。 <サブルーチン> Private Sub CommandButton3_Click() Sheets("ABC").Select Sheets("ABC").Copy Before:=Sheets(1) Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("ABC").Select Application.CutCopyMode = False ActiveWindow.SelectedSheets.Delete End Sub これを実行すると4行目のCells.Selectで   実行時エラー'1004'   RangeクラスのSelectメソッドが失敗しました。 となって止まってしまいます。 ■■質問■■ なぜでしょう?<マクロ>の方はエラーになりません。 ■■追加の質問■■ 一方、マクロの方は   選択したシートに、データが存在する可能性があります。データを完全に削除する   には、[削除]をクリックしてください。 となってしまいます。このメッセージを回避する方法ははありますか?

  • エクセルでの指定抽出の仕方を教えてください。

    いつもお世話になっております。 エクセルを操作して表作成をしていた所、どうしても分からないことが出てきてしまったので教えて頂きたく投稿させて頂きました。 まず、前提として大量のデータがあります。 そのデータは顧客毎に購入履歴が記入されているような感じなのですが、 顧客名の右側から、古い記録順に日付を入れているのです。 なにせ顧客名だけでもすごい量なので、 上部の人が知りたい顧客のものだけを早く見たいと言うのです。 それを実現すべく、その顧客名を入力するとその顧客のデータのみ出てくる表を作成しているのです。(印刷用にです) さすがに過去全てをさかのぼって全部の購入履歴(日付)が出てくるようにしなくてもいいらしくて、 過去20件程度の日付が見られれば良いそうです。 でも、データは常に新しく追加されていきますし・・・ 追加されたものも常に入れながら最新20件程の日付を、顧客名を入力すると表示できる方法ってありませんか? もう頭が飽和状態で困ってます。 助言よろしくお願いします。

  • vba 指定した日付範囲でセルの色を塗る

    急遽、エクセルVBAを組んでくれと頼まれたのでわかる方、教えていただけますか? 開始日時(A行)と終了日時(B行)があり、 開始と終了の範囲でC以降日付になっており 指定の範囲内でセルの色が塗られるいうものなのですが なにせ急ぎとVBAがほとんどわからないのでなるべくわかりやすく 教えていただけるとありがたいです。 ちなみにsheetにコードを記入するのとmoduleにコードを記入するのでは どう違うのですか?わからないまでも一応、色が塗られるところまでは できたのですがどうやってセルの時間を取得して範囲を指定すれば 良いのかなどがわかりませんどうかよろしくお願い致します。 下記は作成途中ですが・・・ Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim row As Integer Dim line As Integer row = 5 line = 9   Set objR = Range("A1").Resize(1, 4).Offset(1, 2) objR.Interior.ColorIndex = 8 End Sub

  • vba 指定した日付範囲でセルの色を塗る

    急遽、エクセルVBAを組んでくれと頼まれたのでわかる方、教えていただけますか? 開始日時(A行)と終了日時(B行)があり、 開始と終了の範囲でC以降日付になっており 指定の範囲内でセルの色が塗られるいうものなのですが なにせ急ぎとVBAがほとんどわからないのでなるべくわかりやすく 教えていただけるとありがたいです。 ちなみにsheetにコードを記入するのとmoduleにコードを記入するのでは どう違うのですか?わからないまでも一応、色が塗られるところまでは できたのですがどうやってセルの時間を取得して範囲を指定すれば 良いのかなどがわかりませんどうかよろしくお願い致します。 下記は作成途中ですが・・・ Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim row As Integer Dim line As Integer row = 5 line = 9   Set objR = Range("A1").Resize(1, 4).Offset(1, 2) objR.Interior.ColorIndex = 8 End Sub

  • エクセルVBAで選択していないシートのセルコピー

    エクセルVBAで質問させてください。 現在選択していないシートから、セルの書式ごとコピーして貼り付けたいのです。 たとえば Sheets(1).Range(Cells(1, 1), Cells(4, 1)).Copy Sheets(2).Range("A1") 等とすると、Sheets(2)が選択されている状態だとエラーになってしまいます。 おそらく、Copyメソッドというのは、選択されているシートにのみ有効だからなのではないか、と思いますが、セルの値だけでなくフォントその他の書式を、別のシート(現在アクティブでない)から持ってくる方法はありますか?

  • VBAのシートコピーで時間が・・・

    VBAにてシートコピーのことについて悩んでいます。 行き詰ってしまったためお助け願えないでしょうか? シートをコピーしていくコードを書いてあるものなのですがやたらとコピーに時間を要してしまいます。 私の施した処置としては当たり前かもしれませんが自動再計算の処理をしないと画面の更新を止めました。実績として全てのコピーが終わるのに1時間近くかかったものが10分くらいまで短縮できました・・・のですがやはり自分の欲としては5分以下に短縮をしたいのです。 他に良い方法はあるのでしょうか? シートの内容としてはかなり多くの数式が入った物を8枚程度コピーするものです。あまり時間が無いので大幅な改良は出来ません。 申し訳ありませんがよろしくお願いします。 時に下記のコードを追加したらすごい遅くなりました・・・ 代替案はどうしたらよいでしょうか? Private Sub CommandButton1_Click() With ActiveSheet .Protect Sheets("Piquet" & Right(.Name, 4)).Range("A1").Value = 1 Sheets("Piquet" & Right(.Name, 4)).Calculate Sheets("Piquet" & Right(.Name, 4)).Range("A1").Value = 9 Sheets("Piquet" & Right(.Name, 4)).Calculate Sheets("Piquet" & Right(.Name, 4)).Select End With End Sub

  • ExcelVBA 一致する名前に対してデータを設定する方法について

    初めまして。tommy57111と申します。 ExcelVBAでプログラムの実現方法をご教授願いたいと思い投稿させて頂きました。 2つの表があり、<Sheet1>の一致する"名前"に対して、 <表1>の"年齢"欄に<Sheet2>の"年齢"を取得して、設定を行いたいです。 "名前"と"年齢"を一つのデータとして、<Sheet2>から取得し、 <Sheet1>で一致する名前を検索して、値を設定すれば良いことまではわかるのですが、実現方法がわかりません。 どなたかご教授をよろしくお願い致します。 <Sheet1> A B C -------------------------- 1 |名前 | 年齢 | 住所 | 2 |A | | AAA | 3 |B | | BBB | 4 |C | | CCC | <Sheet2> A B ------------------- 1 |名前 | 年齢 | 2 |B | 23 | 3 |A | 30 | 4 |C | 18 | ↓結果 A B C -------------------------- 1 |名前 | 年齢 | 住所 | 2 |A | 30 | AAA | 3 |B | 23 | BBB | 4 |C | 18 | CCC |

  • 複数該当の検索処理でエラーになる(オブジェクト変数または With ブロック変数が設定されていません)

    ある複数のチーム単位の名簿をに毎月作成してします。チーム異動のあった人は旧チームファイルを探してあるデータを抽出したいです。 以下のようなコードで異動者がわかるコメントを検索し該当者のある限り処理を続けたいのですが、該当データが複数ある場合、1つ目だけ該当して、2件目以降を検索する結果セルには該当があってもなくてもNothingが返ってきてしまいます。 Workbooks.Open Filename:="000" & intNendo & strHanki,UpdateLinks:=0 Range("A1").Select With Range("A1:A37") Set 結果セル = .Find("異動者", LookIn:=xlValues, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) If Not 結果セル Is Nothing Then 最初アドレス = 結果セル.Address Do strIdousyaName = Cells(結果セル.Row, 5).Value For intteamName2 = 2 To LastTeam Windows(strBookname).Activate Sheets("名簿").Select TeamName2 = Cells(intteamName2, 2).Value '異動先チーム名簿は飛ばす If TeamName2 <> TeamName1 Then Workbooks.Open Filename:=mypath & "チーム名簿\" & TeamName2 & "000" & intNendo & strHanki, UpdateLinks:=0 With Worksheets(1).Range("A6:A37") Set Status = .Find(What:=strIdousyaName, LookIn:=xlValues, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) '異動者の名前があればoooをセットする If Not Status Is Nothing Then strStatusRow = Range(Status.Address).Row Dataooo1 = Cells(strStatusRow, 26).Value strFileCloseFLG = "1" Else With Worksheets(1).Range("E6:E37") Set Status = .Find(What:=strIdousyaName, LookIn:=xlValues, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False) '異動者の名前がある&Dataがゼロの時 oooをセットする If Not Status Is Nothing Then If Cells(strStatusRow, 35).Value = 0 Then strStatusRow = Range(Status.Address).Row Dataooo1 = Cells(strStatusRow, 26).Value strFileCloseFLG = "1" End If End If End With End If End With '該当があったら ループから抜ける If strFileCloseFLG = "1" Then ActiveWindow.Close Windows(TeamName1 & "000" & intNendo & strHanki & ".xls").Activate Cells(結果セル.Row, 44) = Dataooo1 Exit For End If Else End If Next intteamName2 Set 結果セル = .FindNext(結果セル)   ←(1)次の検索該当セルが存在しても結果セルにNothingが返ってきてしまいます Loop While Not 結果セル Is Nothing And 結果セル.Address <> 最初アドレス   ←(2)ここでエラーがでます End If End With (1)次の該当があってもなくても結果セルはnothingです。以前テストしていたときは、該当セルがある場合のみ正常に値が返ってきていたのですが。。(特にコードをかえた記憶もありません) (2)では「オブジェクト変数または With ブロック変数が設定されていません(Error 91)」とでます。 <質問> ・次の検索がうまくヒットするにはどうすればよいでしょうか? ・もし(1)で該当セルがある場合のみ値がかえるようになれば  (2)を『Loop While Not 結果セル Is Nothing』にしかえてエラーを回避しても問題ないでしょうか? 見よう見真似のコーディングで とてもみにくいかと思いますが、期限が迫っていてとても困っています。どうかよろしくお願いします。

  • 複数該当の検索処理でエラーになる(オブジェクト変数または With ブロック変数が設定されていません)

    ある複数のチーム単位の名簿をに毎月作成してします。チーム異動のあった人は旧チームファイルを探してあるデータを抽出したいです。 以下のようなコードで異動者がわかるコメントを検索し該当者のある限り処理を続けたいのですが、該当データが複数ある場合、1つ目だけ該当して、2件目以降を検索する結果セルには該当があってもなくてもNothingが返ってきてしまいます。 Workbooks.Open Filename:="000" & intNendo & strHanki,UpdateLinks:=0 Range("A1").Select With Range("A1:A37") Set 結果セル = .Find("異動者", LookIn:=xlValues, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) If Not 結果セル Is Nothing Then 最初アドレス = 結果セル.Address Do strIdousyaName = Cells(結果セル.Row, 5).Value For intteamName2 = 2 To LastTeam Windows(strBookname).Activate Sheets("名簿").Select TeamName2 = Cells(intteamName2, 2).Value '異動先チーム名簿は飛ばす If TeamName2 <> TeamName1 Then Workbooks.Open Filename:=mypath & "チーム名簿\" & TeamName2 & "000" & intNendo & strHanki, UpdateLinks:=0 With Worksheets(1).Range("A6:A37") Set Status = .Find(What:=strIdousyaName, LookIn:=xlValues, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) '異動者の名前があればoooをセットする If Not Status Is Nothing Then strStatusRow = Range(Status.Address).Row Dataooo1 = Cells(strStatusRow, 26).Value strFileCloseFLG = "1" Else With Worksheets(1).Range("E6:E37") Set Status = .Find(What:=strIdousyaName, LookIn:=xlValues, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False) '異動者の名前がある&Dataがゼロの時 oooをセットする If Not Status Is Nothing Then If Cells(strStatusRow, 35).Value = 0 Then strStatusRow = Range(Status.Address).Row Dataooo1 = Cells(strStatusRow, 26).Value strFileCloseFLG = "1" End If End If End With End If End With '該当があったら ループから抜ける If strFileCloseFLG = "1" Then ActiveWindow.Close Windows(TeamName1 & "000" & intNendo & strHanki & ".xls").Activate Cells(結果セル.Row, 44) = Dataooo1 Exit For End If Else End If Next intteamName2 Set 結果セル = .FindNext(結果セル)   ←(1)次の検索該当セルが存在しても結果セルにNothingが返ってきてしまいます Loop While Not 結果セル Is Nothing And 結果セル.Address <> 最初アドレス   ←(2)ここでエラーがでます End If End With (1)次の該当があってもなくても結果セルはnothingです。以前テストしていたときは、該当セルがある場合のみ正常に値が返ってきていたのですが。。(特にコードをかえた記憶もありません) (2)では「オブジェクト変数または With ブロック変数が設定されていません(Error 91)」とでます。 <質問> ・次の検索がうまくヒットするにはどうすればよいでしょうか? ・もし(1)で該当セルがある場合のみ値がかえるようになれば  (2)を『Loop While Not 結果セル Is Nothing』にしかえてエラーを回避しても問題ないでしょうか? 見よう見真似のコーディングで とてもみにくいかと思いますが、期限が迫っていてとても困っています。どうかよろしくお願いします。

  • Excel VBA テキストボックス内の数値をソートさせるのには?

    VBA初心者です。自分なりに本やネットで調べたのですが、 答えが見つからなかったので質問させていただきます。 フォーム内にある1つのテキストボックスに5桁の数値を入力し、 ボタンを押すことで、入力した数値をソートさせ、シート(A1)に追加入力させたい。 テキストボックス→(数値入力)→ボタンを押す→(ソート)→シート[A1]に入力 テキストボックス→91375→ボタンを押す→13579→シート[A1]=13579 自分の考えでは、入力された5桁の数値を1桁ずつ配列に格納出来れば ソートが可能だと思うのですが、方法が分かりません。 またその場合、ソート後に1桁ずつ別々に格納した数値を ソートさせた5桁の数値にする場合はどのようにしたら良いのでしょうか? また、この考え方以外にも何か方法がありましたらご教授ください

  • 複数該当の検索処理でエラーになる(オブジェクト変数または With ブロック変数が設定されていません)

    ある複数のチーム単位の名簿をに毎月作成してします。チーム異動のあった人は旧チームファイルを探してあるデータを抽出したいです。 以下のようなコードで異動者がわかるコメントを検索し該当者のある限り処理を続けたいのですが、該当データが複数ある場合、1つ目だけ該当して、2件目以降を検索する結果セルには該当があってもなくてもNothingが返ってきてしまいます。 Workbooks.Open Filename:="000" & intNendo & strHanki,UpdateLinks:=0 Range("A1").Select With Range("A1:A37") Set 結果セル = .Find("異動者", LookIn:=xlValues, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) If Not 結果セル Is Nothing Then 最初アドレス = 結果セル.Address Do strIdousyaName = Cells(結果セル.Row, 5).Value For intteamName2 = 2 To LastTeam Windows(strBookname).Activate Sheets("名簿").Select TeamName2 = Cells(intteamName2, 2).Value '異動先チーム名簿は飛ばす If TeamName2 <> TeamName1 Then Workbooks.Open Filename:=mypath & "チーム名簿\" & TeamName2 & "000" & intNendo & strHanki, UpdateLinks:=0 With Worksheets(1).Range("A6:A37") Set Status = .Find(What:=strIdousyaName, LookIn:=xlValues, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) '異動者の名前があればoooをセットする If Not Status Is Nothing Then strStatusRow = Range(Status.Address).Row Dataooo1 = Cells(strStatusRow, 26).Value strFileCloseFLG = "1" Else With Worksheets(1).Range("E6:E37") Set Status = .Find(What:=strIdousyaName, LookIn:=xlValues, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False) '異動者の名前がある&Dataがゼロの時 oooをセットする If Not Status Is Nothing Then If Cells(strStatusRow, 35).Value = 0 Then strStatusRow = Range(Status.Address).Row Dataooo1 = Cells(strStatusRow, 26).Value strFileCloseFLG = "1" End If End If End With End If End With '該当があったら ループから抜ける If strFileCloseFLG = "1" Then ActiveWindow.Close Windows(TeamName1 & "000" & intNendo & strHanki & ".xls").Activate Cells(結果セル.Row, 44) = Dataooo1 Exit For End If Else End If Next intteamName2 Set 結果セル = .FindNext(結果セル)   ←(1)次の検索該当セルが存在しても結果セルにNothingが返ってきてしまいます Loop While Not 結果セル Is Nothing And 結果セル.Address <> 最初アドレス   ←(2)ここでエラーがでます End If End With (1)次の該当があってもなくても結果セルはnothingです。以前テストしていたときは、該当セルがある場合のみ正常に値が返ってきていたのですが。。(特にコードをかえた記憶もありません) (2)では「オブジェクト変数または With ブロック変数が設定されていません(Error 91)」とでます。 <質問> ・次の検索がうまくヒットするにはどうすればよいでしょうか? ・もし(1)で該当セルがある場合のみ値がかえるようになれば  (2)を『Loop While Not 結果セル Is Nothing』にしかえてエラーを回避しても問題ないでしょうか? 見よう見真似のコーディングで とてもみにくいかと思いますが、期限が迫っていてとても困っています。どうかよろしくお願いします。