如何从VBA Sub获取价值?

时间:2017-07-10 21:21:59

标签: excel vba

如何使用单元格中Sub宏中计算的值?

因此,如果我在宏中计算了value1,value2和value3,那么如何在单元格的计算中使用例如value1?

编辑:

这是我的代码,运行正常并在我使用Debug.Print时打印正确的值,但如何在进一步的计算中使用值Price1,...,Price4?

Sub GetPrice()

Dim wb As Workbook
Dim ws As Worksheet
Dim ws1 As Worksheet

Dim Rnge As Range
Dim rRange As Range
Dim rng As Range
Dim catRange As Range
Dim rCell As Range

Dim sdate As Date
Dim name As String
Dim discount As Integer

Set ws = Sheets("Sheet3")
Set ws1 = Sheets("Report")
Set rng = ws1.Range("B22")
Set catRange = ws1.Range("W21:Z21")

sdate = rng
name = rng.Offset(0, -1).Value
discount = 12 ' ActiveCell.Offset(0, 25).Value

Set rRange = ws.ListObjects("Pricing").Range

ws.ListObjects("Pricing").AutoFilter.ShowAllData

    If name = "SomeName" Then

        With rRange
                .AutoFilter Field:=2, Criteria1:="AA"
                .AutoFilter Field:=6, Operator:=xlFilterValues, Criteria2:=Array(2, Format(sdate, "yyyy-mm-dd"))
                .AutoFilter Field:=13, Criteria1:=discount

            For Each rCell In catRange.Cells

                If rCell = "SomeValue" Then
                    .AutoFilter Field:=11, Criteria1:="AA"
                    Set Rnge = .Offset(1, 0).SpecialCells(xlCellTypeVisible)
                    Price1 = Rnge.Cells(1, 14).Value

                ElseIf rCell = "SomeName2" Then
                    .AutoFilter Field:=11, Criteria1:="=AA", Operator:=xlOr, Criteria2:="=AA"
                    Set Rnge = .Offset(1, 0).SpecialCells(xlCellTypeVisible)
                    Price2 = Application.WorksheetFunction.Min(Rnge.Columns(14))

                ElseIf rCell = "SomeName3" Then
                    .AutoFilter Field:=11, Criteria1:="=AA", Operator:=xlOr, Criteria2:="=AA"
                    Set Rnge = .Offset(1, 0).SpecialCells(xlCellTypeVisible)
                    Price3 = Application.WorksheetFunction.Min(Rnge.Columns(14))

                ElseIf rCell = "SomeName4" Then
                    .AutoFilter Field:=11, Criteria1:="=AA", Operator:=xlOr, Criteria2:="=AA"
                    Set Rnge = .Offset(1, 0).SpecialCells(xlCellTypeVisible)
                    Price4 = Application.WorksheetFunction.Min(Rnge.Columns(14))


                End If

            Next rCell

        End With

    End If

    ws.ListObjects("Pricing").AutoFilter.ShowAllData

End Sub

1 个答案:

答案 0 :(得分:1)

包含在宏中:

Sheet.Cells(1,"A").Value = value1
Sheet.Cells(2,"A").Value = value2

等 设置单元格B2的公式,其中

  

= A1 * A2

或者,在宏中包含公式:

result = value1*value2
Sheet1.Cells(1,"A").Value = result