2011-01-03 16 views
1

私はVBA For Dummiesと上記の本の組み合わせを使ってVBAを学んでいます。後者は、簡単な挑戦(チャレンジ2、第2章)を提供しています。私はいくつかのフィードバックについていくつか質問したいと思います。チャレンジ:絶対初心者のためのMS Excel VBAプログラミング

課題は次のとおりです。

置き、ワークシート上のコマンドボタンコントロールとクリックでプログラムを書く()は、マウスのすべてのクリックと5、変数をインクリメント イベントプロシージャ。 この変数の値をメッセージボックスに出力します。

私は応答コードスニペット以下にまとめました:

Sub CommandButton1_Click() 
Dim AddClick As Integer 

AddClick = Range("A1").Value 
AddClick = AddClick + 5 
Range("A1").Value = AddClick 

MsgBox AddClick 

End Sub 

コードは動作しますが、私は「対応範囲( 『A1』の使用を排除する方法がありますかなり確信しています).Value '' AddClick '変数を基にします。これをどうやってやりますか?

*アップデート:Cody Grayの提案(http://articles.techrepublic.com.com/5100-10878_11-5854605.html)のおかげで、私はコードを次のように改訂しました。さらなる簡素化のために編集された):*

Sub CommandButton1_Click() 
Static AddClick As Integer 

AddClick = AddClick + 5 

MsgBox AddClick 

End Sub 

シンプル。もう一度コーディに感謝します。

+0

変数の有効期間と有効期間についての章またはセクションはありますか。もしそうなら、私はその運動がそれに関するものだと思う。 – Fionnuala

+0

あなたの質問とは完全に無関係です:あなたの 'MsgBox'コールの' AddClick'パラメータの周りに括弧は必要ありません。括弧を使いたい場合は、 'Call MsgBox(AddClick)'を呼び出す代わりに 'Call'構文を使うことができます。すべての不満の詳細については、[Eric Lippertの主題に関するブログエントリ](http://blogs.msdn.com/b/ericlippert/archive/2003/09/15/52996.aspx)を参照してください。 –

+0

編集されました。今後の参考になり、非常に感謝しています。ありがとう。 – Kurt

答えて

4

前のサンプルは両方とも間違っていると思います。正しいバージョンは次のとおりです。

Sub CommandButton1_Click() 
    Static AddClick As Integer 
    AddClick = AddClick + 5 
    MsgBox AddClick 
End Sub 
+0

ちょうどメモ:静的は変数がSubの終わりにリセットされるのを避けます。整数は常に0に初期化されるため、ここで初期値を与える必要はありません。 –

1

モジュールレベルで変数を定義します。
これを行うと、プロシージャからモジュールへの変数のスコープが増加します。

既存のコードをこのコードに置き換えます。

Option Explicit 
Dim AddClick As Integer 

Sub CommandButton1_Click() 
    AddClick = 0 
    AddClick = AddClick + 5 

    MsgBox (AddClick) 
End Sub 

注:プロシージャ・レベルで変数を定義すると、その寿命が制限されます。
、つまり、変数はプロシージャの範囲外にアクセスできません。

+0

これは完全に正しいものですが、実際に何が起こっているのかをよりよく理解することができますが、質問者が読んでいる本/チュートリアルでは、静的変数が導入されており、この例。 VB6での使い方の怠け者(VBAに適用するのは非常に簡単です):http://articles.techrepublic.com.com/5100-10878_11-5854605.html –

+0

@Cody Grey - ありがとう多く。私は見落とされた単純なことがあることを知っていました。私は閉鎖のために、改訂されたコードスニペットを投稿します。再度、感謝します。 – Kurt

+0

変数スコープが統計の前に教えられる可能性は高いですか? – Jay

関連する問題