VB2005 プロジェクトを開いて閉じると変更していないのに保存しますか?と聞いてくる場合

プロジェクトを開いて、何も変更せずに閉じた場合でも
「以下の項目への変更を保存しますか?」と必ず聞いてくる場合がある.

ある特定のプロジェクトでこのような現象が起き,何度やっても必ず聞いてくる.

原因はLabelコントロールのプロパティーで,
AutoSize = True かつ
Dock が None以外になっているためである.

AutoSize = False にすればこの現象は出なくなる.

どうしても AutoSize = True で Dock を設定したい場合は,
コードの中で AutoSize = True にすれば良いだろう.

Label以外にも例えば,
Panelの中にListBoxをDock = Fillで入れた場合にもなる場合があるようだ.

Excel VBA 動的配列が空かどうかの確認方法

次のように配列の要素を確保しないでUBoundなどを使うと,
「インデックスが有効範囲にありません。」というエラーが出る.

Sub test()
    Dim i As Long
    Dim a() As Long

    For i = 0 To UBound(a) ‘エラー
        ‘~~~
    Next
End Sub

エラーを回避しようと思っても Not a Is Nothing とかは使えない。
次のようにするとエラーを回避できる.

Sub test()
    Dim i As Long
    Dim a() As Long
    If Not Not a Then ‘Notを2つ
        For i = 0 To UBound(a)
            ‘~~~
        Next
    End If
End Sub

または,

Sub test()
    Dim i As Long
    Dim a() As Long
    If Sgn(a) <> 0 Then ‘Sgn関数を使う(なぜ使えるのかは不明)
        For i = 0 To UBound(a)
            ‘~~~
        Next
    End If
End Sub

または,

Private Declare Function SafeArrayGetDim Lib “oleaut32” (ByRef psa() As Any) As Long

Sub test()
    Dim i As Long
    Dim a() As Long
    If SafeArrayGetDim(a) <> 0 Then ‘APIを使う
        For i = 0 To UBound(a)
            ‘~~~
        Next
    End If
End Sub