- 題名: HRESULTからの例外
- 日時: 2009/11/05 14:37:54
- ID: 25729
- この記事の返信元:
- (なし)
- この記事への返信:
- [25734] Re[1]: HRESULTからの例外2009/11/06 11:15:13
- [25735] Re[1]: HRESULTからの例外2009/11/06 11:22:50
- ツリーを表示
2009/11/06(Fri) 11:18:23 編集(投稿者) ■No25729に返信(dshyさんの記事) > > プログラムを実行すると、以下の警告が発生しました。 > > COMExceptionはハンドルされませんでした > HRESULT からの例外: 0x800A03EC COM サーバーで例外が発生するとこのエラーが出ます。 > Private Sub check_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles check.Click > > xlCells = xlSheet.Cells > > Dim SearchChar As String > Dim dp, np As Integer > > For i = 0 To 5 > xlRange = DirectCast(xlCells(i, 8), Excel.Range) ★ > Do > SearchChar = xlRange.Value > dp = Text2.Text.IndexOf(SearchChar, np) > If dp >= 0 Then > MessageBox.Show(dp + 1 & " 文字目に見つかりました") > np = dp + SearchChar.Length > Else > MessageBox.Show("指定の文字は見つかりませんでした") > Exit Do > End If > Loop > Next i > > MRComObject(xlCells) 'xlCellsの解放 > MRComObject(xlRange) 'xlRangeの解放 > > End Sub For 文の開始インデックスを 0 からまわしてますが、 Excel.Range の行(列)インデックス指定は 0 ではなく 1 からです。 提示のソースでは、For 文の初回ループが xlCells(0, 8) になっており、 存在しないセル「0 行 8 列」を参照しにいくため、COM サーバーが例外を発生します。 よって For i = 0 To 5 ・・・ Next ではなく For i = 1 To 5 ・・・ Next になりますね。
分類:[.NET]
【解決したい問題】
環境は、Visual Studio 2008 です。
プログラムを実行すると、以下の警告が発生しました。
COMExceptionはハンドルされませんでした
HRESULT からの例外: 0x800A03EC
発生場所は★の位置です。
------------------------------------
Private Sub check_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles check.Click
xlCells = xlSheet.Cells
Dim SearchChar As String
Dim dp, np As Integer
For i = 0 To 5
xlRange = DirectCast(xlCells(i, 8), Excel.Range) ★
Do
SearchChar = xlRange.Value
dp = Text2.Text.IndexOf(SearchChar, np)
If dp >= 0 Then
MessageBox.Show(dp + 1 & " 文字目に見つかりました")
np = dp + SearchChar.Length
Else
MessageBox.Show("指定の文字は見つかりませんでした")
Exit Do
End If
Loop
Next i
MRComObject(xlCells) 'xlCellsの解放
MRComObject(xlRange) 'xlRangeの解放
End Sub
------------------------------------
textBoxに入力した文にExcel(2003)に入力してある文字列があるかどうか検索するというものを作りたいです。
初心者ですのでこのようなエラーは見たことがなく、
検索したりヘルプも見てみましたがどうすればいいか分かりません。
どうか宜しくお願いします。