VB小ネタ

知らなくても問題なくプログラムを組めるけど知っていた方がいいかもしれないけどやっぱり知らなくてもいいこと。
内容が内容だけに間違いが多いため、実用性は不明です。

ファイルの中身が…
VB起動
プロジェクト開く
プロジェクトに含まれるファイルの名前をエクスプローラなどで変更する
変更したものをプロジェクトに追加
元のファイルをプロジェクトから解放
プロジェクトを保存する
元のファイルが消え、変更後のファイルも消える

VBのおせっかい機能の一つ
ダブルクリックのタイミングをずらす
クリックはマウスボタンを押して離した時、
ダブルクリックは2回目が押された瞬間、
イベントが起きるんですね。
両方とも離した瞬間に統一したいことがあるわけです。
Dim DoubleClicked As Boolean

Private Sub Form_DblClick()
    DoubleClicked = True
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If DoubleClicked And Button = vbLeftButton Then
        DoubleClicked = False
        'ダブルクリックの処理
    End If
End Sub
これの応用でツリービューのノードのダブルクリックも検出できたりします。
Enter→Tab
KeyDown イベント内で、
If KeyCode = vbKeyReturn Then
    SendKeys "{tab}"
End If
単純単純。
ダブルクォーテーション
文字列中にダブルクォーテーションを使うときは、
「""」を使います。
MsgBox """ダブルクォーテーション""を使うサンプル"
アクティブチェック
GetForegroundWindow APIを使って、
Active = Me.hWnd = GetForegroundWindow()
アクティブならActiveがTrueに!
ちょこっと速度向上
A = B

If A <> B Then A = B
にする。

一見意味がなさそうに見えますが、A と B が同じ値の場合速くなることがあります。
特にコントロールのプロパティの変更の時には効果絶大です。
A または B が 0 ならば
A と B のどちらかが 0 ならば True
という条件判断はあなたはどうやっていますか?

If A = 0 Or B = 0 Then
にしていますか、それとも
If A * B = 0 Then
にしていますか?

実は速度的には後者の方が速いのです。
若干・・・・ですが。
全角文字
DIM S1 AS STRING*4
と入力してみよう!
Dim S1 As String * 4
に勝手に変換されちゃうぞ!!
コメントと文字列の外にある空白と英数字・記号は
半角文字にされちゃうんですね。