プロが教えるわが家の防犯対策術!

いつも教えてgooの皆さんに大変お世話になっております

以下は、Private Sub Worksheet_Change(ByVal Target As Range)内の
文字列操作のマクロですが、MiniLenを変数宣言しなくても
マクロは狙った通りの動きをします
なぜでしょうか?
どなたか教えてください

Dim MojiLen as String 'MojiLen(文字数という意味で)
MiniLen=3 '最少文字数

If Not IsNumeric(Right(Range("E16").Value, 1)) Then 'E16の右端が数値でないなら
MojiLen = "8"
ElseIf CInt(Right(Range("E16").Value, 1)) < MiniLen Then
MojiLen = MiniLen
Else
MojiLen = Right(Range("E16").Value, 1) 'E16は固定です
End If

Range("E" & Target.Row).FormulaR1C1 = "=LEFT(RC[-1]," & MojiLen & ")"

A 回答 (1件)

明示的に変数の宣言を行わなくても、暗黙的に宣言されるようになってるからだと思います。



Option Explicit ステートメント (Visual Basic)
http://msdn.microsoft.com/ja-jp/library/y9341s4f …

--
モジュールの先頭に、

Option Explicit On

と書いておくと、変数の使用には明示的な宣言が必要になり、質問のソースはエラーになるハズ。


例えば、質問の例だとスペルミスやタイプミスなどで、

MojiLen = MinLen

とかってしちゃうと、予期しない動作をするとかって事があります。
そういうケースの方が面倒なトラブルになりやすいので、Option Explicit Onするクセを付けとくのが良いかも。
    • good
    • 0
この回答へのお礼

早速教えていただきましてありがとうございます
よく理解できました
大変勉強になりました

お礼日時:2015/01/18 22:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!