1

私は次の機能を持っていますVBA

Public Function lorh(custo As Integer)
If custo > 10.99 And custo <> 0 Then
    lorh = "1.4"
Else
    If custo < 11 And custo <> 0 Then
        lorh = "1.35"
    Else
        If custo <= 0 Or custo < 0 Then
            lorh = "Valor Inválido"
        End If
    End If
End If
End Function

excelここで必要なのは、この関数をサブから、またはマクロから開始して呼び出すことです。これにより、ツールバーのカスタム ボタンに関連付けることができます。誰でも私を案内できますか?

4

2 に答える 2

3

Actually, if you have that function inside of a module, you can directly reference it inside a worksheet cell, pretty much as you do with Excel's formulas.

=lorh(A1)

In order for your code to run from a macro button, it needs to be a Sub instead of a Function

I think the code below would work the way you want it, I removed redundant pieces as well as Barranka did.

Public Sub lorh()
    Dim lorh As String
    custo = ActiveCell.Value

    If custo > 10.99 Then
        lorh = "1.4"
    Else
        If custo > 0 Then
            lorh = "1.35"
        Else
            lorh = "Valor Inválido"
        End If
    End If

    ActiveCell.Value = lorh
End Sub

This macro would use the active cell value the same way you were using the custo parameter in your function.

于 2012-10-18T20:36:24.880 に答える
1

関数を Excel シートで使用する必要がある場合は、andrux が言ったように、任意のセルに書き込むだけで済みます。

サブルーチンから呼び出す必要がある場合は、次のように記述するだけです。

public sub aSubprocedure()
    ' Any variables and other instructions go here
    var = lorh(input)
    ' Your code goes on
end sub

次に、サブプロシージャをボタンに割り当てることができます。


あなたのコードのためのいくつかの提案:

関数に対して次の「クリーンアップ」をお勧めします。

Public Function lorh(custo As Integer)
    If custo > 10.99 And custo <> 0 Then
        lorh = "1.4"
    Else If custo < 11 And custo <> 0 Then
        lorh = "1.35"
    Else If custo <= 0 Then
        lorh = "Valor Inválido"
    End If
End Function

冗長であることに注意してif custo <= 0 or custo < 0ください...必要なのはcusto<=0.

これがお役に立てば幸いです

于 2012-10-18T20:53:14.410 に答える