Как я могу использовать значение, вычисленное в макросе 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
0
joddm 11 Июл 2017 в 00:21
Положить в другую ячейку на листе? Не могли бы вы рассказать подробнее?
 – 
Doug Coats
11 Июл 2017 в 00:25
2
Вы уверены, что не хотите иметь вместо этого функцию function , которая возвращает значение и вызывается с помощью формулы ячейки, например =MyAwesomeFunction(A1,42)?
 – 
Mathieu Guindon
11 Июл 2017 в 00:39
Да, я думаю, что это то, что я хочу @ Mat'sMug, я добавил свой код VBA сейчас, если вы можете взглянуть.
 – 
joddm
11 Июл 2017 в 09:15

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
1
Salek 11 Июл 2017 в 00:28