VBA
関数名を変数として使用したときに、このエラーメッセージが出る場合がある。以下は例。 str = Dir("c:\work\work.txt") C言語の使い手には文字型変数でstrという変数は定番だが、Excel VBAでstrとは数値を文字列に変換する関数strと同名であることから、str…
VBAは文字列の処理を、内部ではUnicodeで扱っていることから、全角文字も半角文字も1バイトであり、LenB関数を使用しても「あいうえお」も「Excel」も5が得られてしまう。処理する文字をUnicode以外にしてLenB関数を使用すればよい。 Function lengthB(st As…
実行時にFunction文の行でプログラムが停まり、このエラーメッセージを含むダイアログボックスが表示されたときは、関数の戻り値の代入文のところを調べてみること。例えば等号記号(=)が抜けていないか、など。
アラートフラグを一時的にFalseにすること。 Application.DisplayAlerts = False ActiveWorkbook.SaveAs filename Application.DisplayAlerts = True これでダイアログボックスでどうするか聞かれることなく、自動で上書き保存される。
ワークシートのnameプロパティを使用している時のこのメッセージが出た場合、nameプロパティに代入しようとしている文字列が、空("")である可能性もあることから、確認をすること。
VBAを実行時にこのエラーメッセージが出た時は、メソッド.Worksheets.Addでブックにワークシートを追加する時に、そのブックに既に存在しているワークシートと同じ名前のワークシートを作成しようとしている可能性がある。 例えばWithステートメントの.name…
最近のVisual Basicである2008や2010は、整数型(Integer)の大きさは32ビット(4バイト)。つまり、使用できる範囲が-2,147,483,648~2,147,483,647である符号付きの整数。 だが、Microsoft Excelなどで使用できるVisual Basic for Applications(通称VBA)…
ExcelのVBAでcellsを使用してセルの値の取得や設定をしているときに,このメッセージが出るときがある.原因はいろいろ考えられるが,単純なミスとして行や桁に0を指定してるときがあるのでそれを確認すること. cellsの引数はエクセルのセルそのままに1から…