- ベストアンサー
VBScriptでfindを使うには??
ExcelのA列に日付がずらずらと入っているのですがその中から「今日」に該当する部分を探したいと思っています。 findを使うことが出来ないでいます。 Const xlValues = -4163 Set objExcelApp = CreateObject("Excel.Application") objExcelApp.Visible = True objExcelApp.Workbooks.Open("C:\Book1.xls") strLastDay = Cstr(Date - 1) With objExcelApp.WorkSheets("Sheet1").Rangge("A8:A65535") Set objClm = .Find(Trim(strLastDay),,xlValues) If Not objClm Is Nothing Then intCol = objClm.Column intRow = objClm.Row このあとどうしたらいいかわかりません・・・お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
なぜFindが使えないのか詳しいことは分かりませんでしたがとりあえず動くようにはしました。 シートのB列とC列を書き換えているので注意してください。 Const xlValues = -4163 Set objExcelApp = CreateObject("Excel.Application") objExcelApp.Visible = True objExcelApp.Workbooks.Open ("C:\Book1.xls") Set ExcelSheet = objExcelApp.Worksheets("Sheet1") With ExcelSheet 'Cells(1, 2)に検索する日付を入力(Date?) .Cells(1, 2).Value = Date - 1 'Cells(1, 2)の値をTextプロパティで取得するので見た目を整えておく .Columns("A:A").EntireColumn.AutoFit .Columns("B:B").EntireColumn.AutoFit i = 8 '検索開始行 j = 1 'Cells(j, 3)に見つかった行を入力する On Error Resume Next Do Set rng = .Range("A" & i & ":A65535").Find(.Cells(1, 2).Text, , xlValues) .Cells(j, 3).Value = rng.Row j = j + 1 i = rng.Row + 1 Loop Until rng Is Nothing Or i > 65535 On Error GoTo 0 End With
その他の回答 (1)
- myRange
- ベストアンサー率71% (339/472)
>このあとどうしたらいいかわかりません・・・お願いします。 このあとしたいことは、質問者にしか分かりません。(^^;;; それ以前に提示したコードはいくつかミスがあるので動作しません。 で、次のコードを試してみてください。 エクセルA列の日付の表示形式が、2009/9/5(YYYY/M/D) として。 '---------------------------------------------- Const xlValues = -4163 Set objExcelApp = CreateObject("Excel.Application") objExcelApp.Visible = True Set myBook = objExcelApp.Workbooks.Open("C:\Book1.xls") strLastDay = Date With myBook.WorkSheets("Sheet1").Range("A8:A65535") Set objClm = .Find(strLastDay,,xlValues) End with If Not objClm Is Nothing Then intCol = objClm.Column intRow = objClm.Row MsgBox "今日は、" & objClm.Address(0,0) & " のセルです" End If '------------------------------------------ 最も重要なところは Set myBook = objExcelApp.Workbooks.Open("C:\Book1.xls") With myBook.WorkSheets("Sheet1").Range("A8:A65535") これです。 また、今日を探すわけですから >strLastDay = Cstr(Date - 1) Dateから1引く必要はないし、 >Set objClm = .Find(Trim(strLastDay),,xlValues) Trimも不必要だと思いますが。 以上です。