VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2006/01/16(Mon) 15:43
投稿者魔界の仮面弁士
Eメール
URL
タイトルRe: (VB6)Excelの行削除

> 「変数が定義されていません」と表示されてしまいます。

それは、どの部分に対して表示されていますか?


もし、それが分からないようであれば、一度「Option Explicit」を外し、
そのプロシージャの最初の処理(今回は、CreateObject の行) にて、
F9 キーでブレークポイントを張っておき、コードを一時停止してみてください。

その状態で、[表示]メニューの[ローカルウィンドウ]を確認してみてください。
値が Empty になっている変数はありませんか? もしあれば、それが未定義変数かも知れません。


> objExcel.Application.Workbooks.Open pstrDATAPATH

その表記は冗長でしょう。
objExcel と objExcel.Application は同じものを指しますので、
 objExcel.Workbooks.Open pstrDATAPATH
 objExcel.Application.Workbooks.Open pstrDATAPATH
 objExcel.Application.Application.Workbooks.Open pstrDATAPATH
 objExcel.Application.Application.Application.Workbooks.Open pstrDATAPATH
はいずれも同じ意味になります。

> For i = 0 To 10000
先の pstrDATAPATH や、この i という変数などは、Dim で定義してありますか?


> objWS.Rows(CStr(i + 2) & ":" & CStr(i + 2)).Select   'Excelマクロからコピー
> objWS.Selection.Delete Shift:=xlUp           'Excelマクロからコピー
3点ほど。

1) ここの xlUp という定数は、Const で定義してありますか?
2) Worksheetオブジェクトに Selection というプロパティはありません。
3) Select してから、Selection を操作するのは冗長です。
 直接、Range オブジェクトの Delete メソッドを呼び出すようにしましょう。


> objExcel.Application.DisplayAlerts = False
> objExcel.Application.Workbooks.Close
> objExcel.Application.Quit
これらも、.Application が冗長かと。


> 'Excel開放
あながち間違いともいえないのですが、どちらかと言えば、
開放(open)よりも、解放(release, free)の方が適切かも。

> Set objExcel = Nothing
Nothing の代入は無くても大丈夫ですが、もしも書くのであれば、objExcel だけでなく、
それ以外のすべての使用済みオブジェクト変数に対しても Nothing するべきかと。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -