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

投稿日: 2006/12/20(Wed) 20:47
投稿者魔界の仮面弁士
Eメール
URL
タイトルRe^3: DBからエクセルへデータをセットする時のエラー

> rs(1) を rs(1).Value にすると回避できるので、

「既定のプロパティは省略しない方が安全」という教訓ということで…。



> 誰か同様の現象になるか、実行していただけますでしょうか・・・

なりますねぇ。「!」経由でも同様でした。

  With xlBook.Worksheets(1)
    .Cells(3, 1).Value = rs(0)
    .Cells(3, 2).Value = rs!f2    '下記のエラーが発生。rs("f2") でも同様。
  End With

|
| 実行時エラー '-2147417851 (80010105)':
| 'Value' メソッドは失敗しました: 'Range' オブジェクト
|


さらに検証。

<追加実験 1> Field.Value プロパティだけでなく、Recordset.Collect プロパティでも OK。

  With xlBook.Worksheets(1)
    .Cells(3, 1).Value = rs(0)
    .Cells(3, 2).Value = rs.Collect(1)  ' エラーにならない
  End With


<追加実験 2> というより、一度成功した後なら大丈夫らしい……。

  With xlBook.Worksheets(1)
    .Cells(3, 1).Value = rs(0)
    .Cells(3, 2).Value = rs.Collect(1)  ' エラーにならない
    .Cells(3, 3).Value = rs(1)          ' エラーにならない
  End With


<追加実験 3> その上、エラーになるのは最初の 1 回だけということが発覚。

  With xlBook.Worksheets(1)
    .Cells(3, 1).Value = rs(0)
    On Error Resume Next
    .Cells(3, 2).Value = rs(1)  'エラーを読み飛ばしてから
    On Error GoTo 0
    .Cells(3, 2).Value = rs(1)  'もう一度同じことをすると、今度は成功
  End With


<追加実験 4> ちなみに、括弧で囲っただけでも動作する模様。

  With xlBook.Worksheets(1)
    .Cells(3, 1).Value = rs(0)
    .Cells(3, 2).Value = (rs(1))  '括弧で囲むと、エラーにならない
  End With


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

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

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