Я хочу передать строковую переменную "Sheets(2).Cells(i, 41).Value"
в процедуру Sub prcdTariff_calc
, которая в цикле присвоит значение этой переменной, чтобы передать его другой функции, Function Tariff_calc
.
Проблема с Sub prcdSum_year_IR()
. Я уже пытался поиграться с типами данных (String / Double) в процедурах, а также CDbl(quality)
и т.д ... Есть ли способ передать переменную quality
в цикл в Sub prcdTariff_calc
? Спасибо за совет.
Option Explicit
Dim price As String
Dim i As Byte
Public sum_tariff As Double
Dim tariff As Double, period As Double, quality As Double
Function Tariff_calc(a As Double, Optional b As Double = 1, Optional c As Double = 1) As Double
Tariff_calc = a * b * c
Debug.Print b
End Function
Function Price_calc(a As Double, Optional b As String = 1, Optional c As Double = 1) As String
Price_calc = Format(a * b * c, "0.00 €/MWh")
End Function
Sub prcdTariff_calc(Optional a As Double = 1, Optional b As Double = 1, Optional c As Double = 1)
For i = 2 To 43
If ThisWorkbook.Sheets(2).Cells(i, 1).Value = 1 Then
a = Sheets(2).Cells(i, 19).Value
'I also tried b = val(quality) here
'I experimented here by referring to newly created procedure Sub [prcdquality() quality = Sheets(2).Cells(i, 41) End Sub] and back here then b=quality; and it worked
sum_tariff = sum_tariff + Tariff_calc(a, Val(b), c) 'I tried val(b), but it still shows 0 in Debug.Print b above.
price = Price_calc(a, CStr(b), c)
lblPrice.Caption = lblPrice.Caption & price & vbCrLf
End If
Next i
End Sub
Sub prcdSum_year_Firm()'works fine
prcdTariff_calc
lblUnitCost.Caption = Format(sum_tariff, "0.00 €/MWh")
End Sub
Sub prcdSum_year_IR()
quality = Sheets(2).Cells(i, 41)
prcdTariff_calc b:=quality
lblUnitCost.Caption = Format(sum_tariff, "0.00 €/MWh")
End Sub