文書番号: 402412
最終更新日: 1998/02/03
この資料は以下の製品について記述したものです。
Microsoft(R) Excel for Windows(TM) Version 5.0 (以下 Excel 5.0) この記事は、以前は次の ID で公開されていました: JP402412
概要
本文書は、Lotus 1-2-3 (以下 1-2-3) で作成した「 2 バイトの文字列を入力する
マクロ」を Excel 5.0 で実行すると一般保護違反が発生する問題と回避策を
まとめています。詳細 現象
1-2-3 で作成した「 2 バイトの文字列を入力するマクロ」を Excel 5.0 で実行する
と、一般保護違反が発生します。
[アプリケーションエラー]
EXCEL で一般保護違反が発生しました。
発生した場所は、モジュール SDMDBCS.DLL の 0005:365E 番地です。
回避策 1
先頭の文字が 2 バイトの場合にのみ発生する現象です。そのため、先頭に「半角
スペース」などを追加することで回避できます。先頭に追加した「半角スペース」
は、必要に応じてマクロで文字列を入力後、削除してください。
編集前
\a {GOTO}A8~
仕事は捗っていますか? (Y/N)~
{GET A9}~
{IF A9="Y"} もう少しがんばりましょう!~
{IF A9="N"} お茶にしましょう!~
編集後
\a {GOTO}A8~
仕事は捗っていますか? (Y/N)~
{EDIT}{HOME}{DEL 2}~
{GET A9}~
{IF A9="Y"} もう少しがんばりましょう!~{EDIT}{HOME}{DEL 2}~
{IF A9="N"} お茶にしましょう!~{EDIT}{HOME}{DEL 2}~
{EDIT} {HOME} {DEL 2}~ は先頭に追加した「半角スペース」を削除するため
の記述です。
回避策 2
1-2-3 のマクロから Microsoft(R) Visual Basic(R) Programming System
Applications Edition (以下 VBA) のモジュールをコールすることができま
す。VBA で 2 バイトの文字列を入力を行なう場合は一般保護違反は発生し
ませんので、先頭に「半角スペース」を追加する必要はありません。
1-2-3 のマクロから VBA のモジュールをコールするサンプルは次の通りです。こ
のマクロを実行することによって、「回避策 1 」 と同じ結果が得られます。
1-2-3 マクロ
\a {GOTO}A8~
{XLCALL Message1}~
{GET A9}~
{IF A9="Y"}{XLCALL Message2}~
{IF A9="N"}{XLCALL Message3}~
VBA のモジュール
Sub Message1()
ActiveCell.Value = "仕事は捗っていますか? (Y/N)"
End Sub
Sub Message2()
ActiveCell.Value = "もう少しがんばりましょう!"
End Sub
Sub Message3()
ActiveCell.Value = "お茶にしましょう!"
End Sub
注意
VBA のモジュールを記述する場合には、[挿入] - [マクロ] - [モジュール] コマン
ドを実行して作成した、モジュールシートに記述します。1-2-3 のようにワーク
シートに記述してもマクロとして扱われません。
Keywords: KBBUG KB402412
Technology: kbExcel500 kbExcelSearch kbExcelWinSearch