小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

EXCEL系制御での『アプリケーション定義またはオブジェクト定義のエラー』について

たとえば、DBからデータをSQLして、そのデータをEXCELのセルに代入するとします。

このとき、ノーチェックだと『アプリケーション定義またはオブジェクト定義のエラー』が発生する場合があります。

これは、セルに格納するデータの先頭に『=』が入っていると文字列だと見なさず、数式扱いされ、『=』の以降が定義エラーになると思われます。

したがって、代入する文字列の先頭に『=』がある場合は、『'』を『=』の前に付加してやると数式でなく文字列扱いされ、正常に処理されます。

'イメージサンプル
 
           for lngIdx = 0  to UBound(datDB) step 1
               If (Mid(datDB(lngIdx).strURL, 1, 1) = "=") Then
                    'セルデータの一カラム目が『=』のときは、数式になるため、『'』を先頭に付加して文字列にする。
                    strWk = datDB(lngIdx).strURL
                    datDB(lonIdx).strURL = "'" & strWk
                End If
                shtSheet.Cells(lngIdx, 1) = datDB(lngIdx).strURL
           Next