2009-07-31 3 views
0

関数の引数の名前はstrToothpasteです。関数が呼び出されると、渡された変数は同じ名前を使用します。VBAユーザー関数:引数名と送信する変数名が一致しませんか?

Private Sub DoThis() 
    Dim strToothpaste as String 
    Dim booSmellsFunny as Boolean 
    booSmellsFunny = fnc_Fragrance(strToothpaste) 
End Sub 
-------------------------- 
Private Function fnc_Fragrance(strToothpaste As String) as Boolean 
    If strToothpaste Like "Dr Watson's" Then 
    fnc_Fragrance = True 
    Else 
    fnc_Fragrance = False 
    End If 
End Function 
  • 今までに名前を再使用に問題ありませんか?
  • 変数が正しく範囲内に制限されていない場合、 は危険な状態になりますか?
  • 上記の場合、 は、スコープの平均値を意味します は、名前が でエコーされる可能性があることを意味しますか。
  • 再帰が影響します 何か? (別に は、ダブルチェックのスコープを...)
+0

私はこれを何年も心配していましたが、それを調べるにはあまりにも怠惰でした。 (ヘック、私は今、あまりにも怠惰です...私はちょうどポストを上にしています!)今、コードを再利用することで良くなるので、しばしば "微調整"された変数名は厄介です。私は気になるのは、単に読みにくいということだけです。しかし私は私が得ることができるすべての助けを必要とする! – Smandoli

答えて

4
  1. んがすべてではない、VBAは、パラメータは、パラメータはい、これは危険なことができ機能
  2. にスコープであることを決定するために十分にスマートではありません、もしあなたがOption Expiclit Offの習慣にあれば、それはあなたの正気には決して良いことではありません。
  3. 適切なスコープで問題のない名前をエコーすることができます。
  4. 全くありません。

は、この情報がお役に立てば幸いです。

+0

私が狂っているなら、Option Explicitをオフにしたからではありません。しかし、ありがとう。 – Smandoli

+0

私は良いスコープを理解していない、または適用していないときに、 "調整された" var名が必要だったと推測します。もちろん結局私は緊張しなければならず、私のコードを「正規化する」ことが非常に重要であるだけでなく楽しいことも分かった。 – Smandoli

関連する問題