
以下画像をご覧ください。
左のブックにてアクティブセルにある時間(12:01:01)を右の別ブックから検索
見つかったセルから最終行までを範囲選択をしたい
右のブックに検索してヒットしなければ、メッセージBOXにて表示したいです。
「検索時間なし」メッセージ表示したいです
ご存じの方、マクロのコードorアドバイスお願いします
【条件】
左のブック
C:\Users\2020\OneDrive\マクロ\E\3月度管理シート.xlsm
右のブック
C:\Users\2020\OneDrive\マクロ\E\売上一覧20250418173839.csv
シート名⇒2つのブック⇒Sheet1
時間の書式⇒h:mm:ss⇒ユーザー定義
※普通に秒まで入力した場合の書式

A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
No3です。
補足ありがとうございました。複数のCSVファイルがオープンされているので、
"売上一覧20250418173839.csv" のみを探して、そのSheet1 のC列を2行目から最後まで
アクティブセルにある時間で検索します。
こちらの環境では、"売上一覧20250418173839.csv"をオープンすると、シート名は
"売上一覧20250418173839"になるのですが、あなたの環境では"Sheet1"になるということなので、
"Sheet1"を使用します。
以下のようにしてください。
Sheet1が存在しない場合は、
Set ws = wb.Worksheets("Sheet1")
の行でエラーが発生します。その場合は、その旨、補足してください。
以下のマクロを3月度管理シート.xlsmの標準モジュールに登録してください。
Option Explicit
Public Sub 時間検索()
Dim wwb As Workbook
Dim wb As Workbook
Dim ws As Worksheet
Dim lastRow As Long
Dim wrow As Long
Dim stime As Date
Dim s As String
Dim bookName As String: bookName = "売上一覧20250418173839.csv"
stime = -1
If ActiveCell.Column = 2 Then
s = ActiveCell.Value
If IsNumeric(s) Then
If CDate(s) >= 0 And CDate(s) < 1 Then
stime = ActiveCell.Value
End If
End If
End If
If stime = -1 Then
MsgBox ("アクティブセルの位置又は内容が不正")
Exit Sub
End If
Set wb = Nothing
For Each wwb In Workbooks
If LCase(wwb.name) = bookName Then
Set wb = wwb
Exit For
End If
Next
If wb Is Nothing Then
MsgBox (bookName & "がありません")
Exit Sub
End If
Set ws = wb.Worksheets("Sheet1")
lastRow = ws.Cells(Rows.Count, "C").End(xlUp).Row
For wrow = 2 To lastRow
If DateDiff("s", ws.Cells(wrow, "C").Value, stime) = 0 Then
wb.Activate
ws.Activate
ws.Range(ws.Cells(wrow, "C"), ws.Cells(lastRow, "C")).Select
Exit Sub
End If
Next
MsgBox ("検索時間なし")
End Sub
No.3
- 回答日時:
補足要求です。
1.作成したマクロを格納するブックは、
3月度管理シート.xlsm でしょうか。それとも、別のブックでしょうか。
2.マクロ実行時に、オープンされているブック(ファイル)は、
3月度管理シート.xlsm と
売上一覧20250418173839.csv の2つだけでしょうか。
それとも、ほかにも、オープンされているブックがあるのでしょうか。
特に、CSVファイルで、売上一覧20250418173839.csv の他にオープンされているものがありますか。
3.対象となるシートは、
3月度管理シート.xlsmのSheet1
売上一覧20250418173839.csvのSheet1
ということですが、
売上一覧20250418173839.csvをオープンすると、
シート名は売上一覧20250418173839 になり、Sheet1にはなりません。
対象となるシートは、
売上一覧20250418173839.csvのSheet1ではなく、
売上一覧20250418173839.csvの売上一覧20250418173839 と理解して良いでしょうか。
補足要求です。
1.作成したマクロを格納するブックは、
3月度管理シート.xlsm でしょうか。それとも、別のブックでしょうか。
⇒3月度管理シート.xlsm です
2.マクロ実行時に、オープンされているブック(ファイル)は、
3月度管理シート.xlsm と
売上一覧20250418173839.csv の2つだけでしょうか。
それとも、ほかにも、オープンされているブックがあるのでしょうか。
特に、CSVファイルで、売上一覧20250418173839.csv の他にオープンされているものがありますか。
⇒他のCSVやexcelファイルも開いています
⇒対象ではない、日付の違う 売上一覧30000101100060.csv は開いています
⇒売上一覧+14ケタ.csv です
3.対象となるシートは、
3月度管理シート.xlsmのSheet1
売上一覧20250418173839.csvのSheet1
ということですが、
⇒はいそうです
売上一覧20250418173839.csvをオープンすると、
シート名は売上一覧20250418173839 になり、Sheet1にはなりません。
対象となるシートは、
売上一覧20250418173839.csvのSheet1ではなく
売上一覧20250418173839.csvの売上一覧20250418173839 と理解して
良いでしょうか。
⇒ここが、知識が無いため分かりません
⇒以下の❷を開いたら
売上一覧20250418173839.csv Sheet1 になりませんか?
以下になるということでしょうか?
ブック⇒売上一覧20250418173839.csv シート⇒売上一覧20250418173839
【対象ファイル】
❶3月度管理シート.xlsm Sheet1⇒マクロ保管
❷売上一覧20250418173839.csv Sheet1⇒データファイル
No.2
- 回答日時:
Sub SearchTimeAndSelectRange()
Dim wsCSV As Worksheet
Dim searchTime As Double
Dim foundCell As Range
Dim lastRow As Long
' CSVデータが存在するシートを指定(例:"売上一覧"シート)
Set wsCSV = ThisWorkbook.Worksheets("売上一覧20250418173839")
' アクティブセルの時間値を取得(Double型に変換)
searchTime = ActiveCell.Value * 24 ' 時間を0-23の数値に変換
' 検索範囲(例:A列)
Set foundCell = wsCSV.Columns("A").Find(What:=searchTime, LookIn:=xlFormulas, LookAt:=xlWhole)
If Not foundCell Is Nothing Then
' 最終行を取得
lastRow = wsCSV.Cells(wsCSV.Rows.Count, foundCell.Column).End(xlUp).Row
' 範囲選択(見つかったセルから最終行まで)
wsCSV.Range(foundCell, wsCSV.Cells(lastRow, foundCell.Column)).Select
Else
MsgBox "該当する時間が見つかりませんでした", vbExclamation
End If
End Sub
こんな感じでしょうか?
ファイルの場所の指定とかはアレンジしてみてください
お返事ありがとうございます
試しましたが、検索ができませんでした
アクティブセル⇒10:01:01
検索列A⇒10:01:01
を入力の上、試しましたが、検索できませんでした
主な変更点は
ThisWorkbook.Activate です
アクティブセルのブックがアクティブにならなかったので
入れました。自分のブックやシートの変数の入れ方が原因かと思います
【質問】
アクティブセルの時間は
searchTime = ActiveCell.Value * 24 ' 時間を0-23の数値に変換
24をかけて
検索するA列の時間帯は、24をかけないのはなぜでしょうか?
ご指導のほど、お願いします
No.1
- 回答日時:
こんにちは
なんだか、ファジーな仕様ですけれど・・
完全一致で良ければ、Findメソッドで、
対象シート.Columns(3).Find(What:=ActiveCell.Value, LookAt:=xlWhole)
とすれば、一致するセルを取得できます。
ただし、検索値と被検索セルの値は同じ形式になっている必要があります。
(文字列か、時刻型の値かなど)
一致するものがない場合には、エラーが発生しますので、エラー処理を加えてください。
エラー処理を行うのが面倒なら、対象範囲(=C列)をループする方法でも同様の結果を得ることは可能でしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) (マクロ)vlookupの元データを同じブックのシートではなく、別のブックに設定したい 1 2024/06/02 10:03
- Excel(エクセル) 【マクロ】VLOOKUPにて参照元にデータが無い場合【該当なし】と表示したい 3 2024/06/08 16:45
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2024/04/02 16:12
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2024/06/13 13:39
- Excel(エクセル) 【関数】【マクロ】データの転記の方法について 2 2023/07/26 15:22
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- Excel(エクセル) 【マクロ】毎回、ファイル名が変わるファイルへの 文字列の転記 2 2024/05/02 14:17
- Excel(エクセル) 【マクロ】【VBA】同じフォルダ内にあるエクセルのデータを転記したい 2 2023/07/26 15:13
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2024/04/01 17:53
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/16 14:36
このQ&Aを見た人はこんなQ&Aも見ています
-
【関数】同じ関数なのに、エラーが出るエクセルと出ないエクセルある?
Excel(エクセル)
-
9月17日でサービス終了らしいのですが、今までのようなエクセルの質問や相談はどこですればいい?
Excel(エクセル)
-
特定のセルだけ結果がおかしいです。 関数はオートフィルでコピーしており、細かく見てもどこもおかしくあ
Excel(エクセル)
-
-
4
【マクロ】3行に上から下に並んだ文字列を、単純に、逆に並び替えれますか?
Excel(エクセル)
-
5
エクセルのdatedif関数を使って、年齢と月齢を入力しました。 関数を入力して、問題なく使えたので
Excel(エクセル)
-
6
条件付書式設定にて、本日の日付を条件として、2行分にセルに色を付けるには?
Excel(エクセル)
-
7
エクセルの循環参照、?
Excel(エクセル)
-
8
【マクロ】WEBシステムから保存ではなく、開いたExcelデータを変数に入れる事が出来る?
Excel(エクセル)
-
9
【マクロ】A列にある、日付(本日:4月17日)を検索し、セルを選択するには?
Excel(エクセル)
-
10
【マクロ】コードを少しでも、減らする為には
Excel(エクセル)
-
11
エクセル ドロップダウンリストの絞り込みについて
Excel(エクセル)
-
12
【エクセル】期限アラートについて
Excel(エクセル)
-
13
自動的に日付入力 応用
Excel(エクセル)
-
14
システムファイルについて
Excel(エクセル)
-
15
マクロOn Error GoTo ErrLabelとOn Error Resume Next教えて
Excel(エクセル)
-
16
Excel 複数のセルが一致するときに網掛けをする式は作れますか
Excel(エクセル)
-
17
findメソッドで、10:00:01 を検索をして、メッセージボックスにセル番地と時間が表示できない
Excel(エクセル)
-
18
【マクロ】EXCELで読込したCSVファイルは通常のエクセル(xlsx)と同じようにマクロで動かせる
Excel(エクセル)
-
19
エクセル
Excel(エクセル)
-
20
【マクロ】開いているブックの名前を取得した後、名前をセルに1つづつ入力するには?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
別ブックから入力規則でリスト...
-
エクセルを共有するとPCによっ...
-
エクセルで参照しているデータ...
-
【マクロ】アクティブセルの時...
-
Excelの新しい空白のブックを開...
-
Excel(2010)のフィルターが保...
-
フォルダ内の複数ファイルから...
-
Excel 一枚のシートにある全て...
-
ワードやエクセルで「時間が来...
-
別フォルダにある同じ名前のブ...
-
「ブックの共有」を有効にして...
-
Excelで指定範囲のデータ...
-
フォルダ内の複数ブック・シー...
-
Excelで複数ブックの同一セルに...
-
【マクロ】【VBA】同じフォルダ...
-
エクセル 複数のブックを一度...
-
Excelでブックの共有を掛けると...
-
指定ファィルの指定シートをシ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】アクティブセルの時...
-
Excelの新しい空白のブックを開...
-
VBAでブックを非表示で開いて処...
-
エクセルの関数 ENTERを押...
-
エクセルを共有するとPCによっ...
-
Excelファイルをダブルクリック...
-
WorkBooksをオープンさせずにシ...
-
Excelでブックの共有を掛けると...
-
エクセルで参照しているデータ...
-
Excel(2010)のフィルターが保...
-
Excelの警告について
-
Excelで複数ブックの同一セルに...
-
フォルダ内の複数ファイルから...
-
同じフォルダへのハイパーリン...
-
エクセルにおける,「ブック」...
-
別ブックから入力規則でリスト...
-
エクセルで別ブックをバックグ...
-
エクセルでウィンドウの枠固定...
-
エクセルファイルを開かずにpdf...
-
「ブックの共有」を有効にして...
おすすめ情報