ほっとひといき給湯室

ほっとひといき給湯室の掲示板です。お気軽にどうぞ!
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
VBEネタ
投稿日時: 18/04/25 09:58:55
投稿者: 々々 ゝゝ

VBAではなくVBEに関するネタを自由に。
 
 
早速一つ。
 
VBEのコードウィンドウに
 
Rem#ark # _
    1/1/111#
Remark _
    #1/1/111#
Remark # _
    1/1/111#
 
と入力(コピペも可)すると
 
Remark # _
    1/1/111#
Remark # _
    1/1/111#
Remark # _
    1/1/111#
 [標準コード 識別子 コメント 構文エラーの文字]
 
に自動で変換される。
 
以下、この現象についての私の勝手な独自解釈(自分はこう考えるという意見、それは違うだろという指摘も歓迎)
 
一つ目のは、
 まずRem#というトークンを読み取る(#はDouble型の型宣言文字)
 ↓
 Remステートメント(コメント)だと判断し、Remとだけ表示する
 ↓
 結果的にRemと後ろの文字が繋がる
 
二つ目のは、
 Remarkと#1/1/111#は正しく認識されるが、コンパイル時に行頭の#が条件付きコンパイル用のディレクティブだと判断されるのを避ける必要がある
 ↓
 仕方なく始めの#だけを前の行に持ってくる
 
三つ目のは、
 Remarkの後に#というトークンを認識するが、Printステートメント等を除いて文中に#が単独で現れることはない
 ↓
 構文エラーと判断する

投稿日時: 18/04/25 10:04:36
投稿者: 々々 ゝゝ

書き忘れていましたが、
 Windows10
 Excel2016
です。
他の環境でどうなるかは確認していません。

回答
投稿日時: 18/04/26 11:04:59
投稿者: hatena
投稿者のウェブサイトに移動

同様のスレッドが立ってますね。
 
『VBA コードの改行について』(ニックネーム) エクセル Excel [エクセルの学校]
http://www.excel.studio-kazu.jp/kw/20180424150924.html

投稿日時: 18/05/08 18:39:08
投稿者: 々々 ゝゝ

似たような例をもう一つ。
 
Sub Test()
[If False Then]:
    Debug.Print "Test"
[End If]:
End Sub
 
と入力すると
 
Sub Test()
If False Then:
    Debug.Print "Test"
End If:
End Sub
 
に変換される。
 
実行すると"Test"と表示されるので、ただのラベルとして処理されている模様。
 
(実行環境: Windows10, Excel2016)

トピックに返信