1

私はExcelで関数を書くのが初めてです(主にサブプロシージャをコーディングしています)。

次の関数宣言が何を意味するのか疑問に思っていましたか?

public function function_name(args as string) as string

の 2 番目のインスタンスまではすべて理解していますas string。これは私にとって新しいことであり、これが宣言することとどう違うのかわかりません:

public function function_name(args as string)

4

4 に答える 4

3

public function function_name(args as string) as string

  • publicはアクセス定義です。public は、VBA プロジェクト全体でアクセス可能であることを意味します

  • functionはそれが関数であることを意味します (何かを返すことになっていることを意味します)

  • function_nameは関数の名前です (1 またはアンダースコアで始めることはできません)

  • argsは、関数の本体内で使用されるローカル パラメータ名です。

  • args as Stringは、関数が が型argsであることを期待していることを示しますString

  • ...) StringStringは、関数がデータ型を返すことを示します。したがって、文字列型の変数をディメンション化した場合は、関数を使用してそれに値を割り当てることができます。


返される型を明示的に指定しない標準 (デフォルト) 宣言は、Variant

型を指定せずに変数を宣言するのと同じです。

Dim aVariable

と同等です

Dim aVariable as Variant

Variantがデフォルトのタイプであるためです。

そのため、as Variant別のタイプが指定されていない限り、常に存在します。また、これはデフォルトであるため、明示的にコーディングする必要はありません。

Range("A1").Valueこれはandに似ていますが、 はオブジェクトのデフォルト プロパティであるRange("A1")ため、どちらも同じです。.ValueRange

ここで何が起こるかというと、コンパイラは内部に入る値を評価し、aVariableその型を変数に割り当てます。

あなたが持っているとしましょう

Sub Main()

    Dim varVariable
    Dim strVariable As String

    varVariable = "hello world"
    strVariable = "hello world"

    MsgBox "varVariable is of " & TypeName(varVariable) & " type" & vbCrLf & _
           "strVariable is of " & TypeName(strVariable) & " type"

End Sub

私が今言ったように、両方ともStringタイプです

ここに画像の説明を入力


たとえばC#にどれだけ精通しているかはわかりませんが、C#では、アクセス修飾子の直後に関数の戻り値の型を宣言します.

public string myFunction(string args)

したがって、VB/VBA では、2 番目はC#の最初( public の直後as String)と同じです。string

C# ではreturnキーワードを使用しますが、VBA ではreturnキーワードを function nameに置き換えます。したがって、VBA では非常に基本的なサンプル

Public Function ReturnFirst3Characters(args As String) As String
    ReturnFirst3Characters = IIf(Len(args) > 2, Left(args, 3), args)
End Function

関数は、渡した文字列の最初の 3 文字を返します (文字列が 3 文字より長い場合、そうでない場合は、関数に渡した文字列を返します) 。

于 2013-12-18T23:02:50.040 に答える
0

http://www.cpearson.com/excel/writingfunctionsinvba.aspxから:

Function RectangleArea(Height As Double, Width As Double) As Double
    RectangleArea = Height * Width
End Function

この関数は、Height と Width の 2 つの Double 型変数を入力として受け取り、結果として Double を返します。

于 2013-12-18T22:21:05.400 に答える
0

Procedures に精通している場合は、a を値を返す aFunctionと考えてください。末尾Procedureのは、返される値のタイプを示します。as String

値を返す方法は、関数の名前を変数のように使用することです。

Public Function ConvertToUpperCase(str as string) as string
    ConvertToUpperCase = UCase(str)
End Function
于 2013-12-18T23:27:00.570 に答える
0

2 番目の「as」は、関数が返す型を示します。その関数は文字列を返します。次の方法で関数内で値を返すことができます。

function_name="Value"

于 2013-12-18T22:17:24.887 に答える