投稿日 | : 2007/06/06(Wed) 16:55 |
投稿者 | : アキ |
Eメール | : |
URL | : |
タイトル | : 「オブジェクト変数または With ブロック変数が設定されていません。」というエラーが出てしまいます。 |
OS:WindowsXP
開発:VB6.0
Excel2002
Excelのデータを編集するプログラムを作れと言われまして、初めてVBを扱いました。
文献やHPを見て、VBからExcelを操作するプログラムにしようと考えました。
A列の「Start」という文字が含まれるセルのある行から「End」という文字が含まれるセルのある行まで、B列の見つけた行の上の値をB列の前記の行にコピーするというものです。(説明が分かりづらくてすいません)
[プロジェクト]→[参照設定]→[Microsoft Excel 10.0 Object Library]
にチェックを入れ、以下のようなコードを作りました。
Option Explicit
Dim XLSBook As Object
Private Sub Command1_Click()
Dim Fname As String
Dim num As Single
Dim row1 As Integer
Dim row2 As Integer
Set XLSBook = CreateObject("excel.application.10")
With XLSBook.Application
.Visible = True
Fname = C:\Documents and Settings\User1\My Documents\book1.xls
.Workbooks.Open (Fname)
With .Workbooks(1).Worksheets(1)
Do
row1 = .Range("A:A").Find("Start", lookin:=xlValues).Row
row2 = .Range("A:A").Find("End", lookin:=xlValues).Row
num = .Cells(row1 - 1, 2)
.Range(Cells(row1, 2), Cells(row2, 2)) = num
Loop Until IsError(.Range("A:A").Find("Start", lookin:=xlValues)) = True
End With
End With
Set XLSBook = Nothing
Exit Sub
End Sub
これを実行すると、タイトルのエラーメッセージが表示され、Doループがうまく回りません。デバッグすると、「row1 = .Range("A:A").Find("Start", lookin:=xlValues).Row」の部分が黄色く反転表示されます。
どなたか助言お願いいたします。