2017-02-15 19 views
2

私はvbaにはかなり新しく、何とか私はこのことを理解できません。私はスクリプトを短くしたいので(常に定義する必要はないので)、vbaメソッドのパラメータのデフォルト値が何であるかを調べようとしています。一例として、VBAメソッドパラメータのデフォルト値は何ですか?

Sheets(ComboBox1.Value).Columns(2).Find(What:="Example", _ 
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _ 
SearchDirection:=xlNext, MatchCase:=False) 

私はサブルーチン内で非常に多く、これらの同じパラメータを使用していますし、自分自身を毎回それらを書く手間を惜しましたいと思います。とにかくもしそれらがデフォルト値だったら、私はそれらを落とすことができます。しかし、私はこのメソッドのデフォルト値がどこにあるのか分かりません。

だから私は自分の

Public Function FindVal(What As Variant, Optional After As Variant, _ 
    Optional LookIn As Variant = xlValues, Optional LookAt As Variant = _  
    xlPart, Optional SearchOrder As Variant, Optional SearchDirection As _ 
    Variant = xlNext, Optional MatchCase As Boolean = False, Optional _ 
    MatchByte As Boolean, Optional SearchFormat As Variant) 
FindVal = Find(What=What, After=After, LookIn=LookIn, LookAt=LookAt, _ 
    SearchOrder=SearchOrder, SearchDirection=SearchDirection, _ 
    MatchCase=MatchCase, MatchByte=MatchByte, SearchFormat=SearchFormat) 
End Function 

の定義を作ってみた。しかし、私は右、もっと簡単な方法があります確信していますか?

何か助けが必要です!

+1

これはまた、あなたの更なるスクリプトの改善のためのいくつかのアイデアを与える可能性があります:http://www.excelitems.com/2010/12/optimize-vba-あなたがReplaceを選択し、Ctrl+Iを押すと これは、あなたが得るものですcode-for-faster-macros.html –

答えて

4

MSDNはあなたのお友達です。 Googleで「Range.Find」を検索するだけです。例えば

https://msdn.microsoft.com/en-us/library/office/ff839746.aspx

+2

また、入力する際に​​引数が表示されるまで待ちますが、デフォルトは=とデフォルトの –

+0

となります。 findのようなメソッドの場合、多くのオプションの引数がありますが、ほんの少数だけがデフォルトを持っています。これは、VBAがあなたが望むものを推測しようとするか、これらのオプションの引数に指定した最後のパラメータを使用するかのどちらかになりますので、省略して奇妙なことが起こり始めるように注意してください。 – BenShelton

+0

ありがとう! msdnはパラメータを表示しますが、必ずしもデフォルト値とは限りません。 'Range.Find'では、' MatchCases'にデフォルトがありますが、 'SearchDirection'では' xlNext'がデフォルトですが、そうではありません。私の謙虚な意見があれば、デフォルト値の余分な列があれば非常に役に立ちます。 – hannof

4

Ctrl+IあなたがMSDNに毎回行く避けたい場合は、必要があること、ショートカットです。 enter image description here

関連する問題