プロが教える店舗&オフィスのセキュリティ対策術

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

このあとどうしたらいいかわかりません・・・お願いします。

A 回答 (2件)

>このあとどうしたらいいかわかりません・・・お願いします。



このあとしたいことは、質問者にしか分かりません。(^^;;;
それ以前に提示したコードはいくつかミスがあるので動作しません。

で、次のコードを試してみてください。
エクセル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も不必要だと思いますが。
以上です。
    • good
    • 0

なぜ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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A