Код VBA Excel Приватний підрядний лист Зміна Функція живлення не працює


2

Я роблю робочий аркуш, де швидкість вітру визначає потенційну енергію місця. Це значення лежить в основі декількох аркушів в одному файлі Excel. Я намагаюся написати код, що де I10швидкість вітру і I12яка потенційна кВт * год у цьому місці. Я хочу як I10в I12бути вступними осередками , де ви можете сказати або: Я хочу знати , що швидкість вітрів мені потрібно генерувати 4000 кіловат - годин , тобто чи моя швидкість вітру складає 4,2 м / с , що буде моя потенційна енергія?

Це я зробив поки що, але функція живлення не працює. На даний момент я визначив осередок I12(кВт / год) без VBA, як =(2208,5/(54,872))*I10^3там, де I10знаходиться швидкість вітру.

Код VBA за аркушем, який не працює:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Address = "$I$10" Or Target.Address = "$I$12" Then

        WIND = Range("I10")
        KWH = Range("I12")

        Application.EnableEvents = False

        If Target.Address = "$I$10" Then
            Range("I12").Value = (2208.5 / (54.872)) POWER(WIND,3)
        Else
            Range("I10").Value = POWER( KWH (2208.5 / (54.872)),(1/3)

        End If
    End If
    Application.EnableEvents = True
End Sub

Потенційне рішення, але наразі не працює.

Function MyPower(Number As Double, Exponent As Double) As Double
    MyPower = Number ^ Exponent
End Function

POWERне викликається правильно.
Raystafarian

Відповіді:


0

Спробуйте це (але двічі перевірте математику, я не впевнений, чи правильно вона розраховується, тому що я не впевнений, як має виглядати рівняння)

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Address = "$I$10" Or Target.Address = "$I$12" Then

        wind = Range("I10")
        KWH = Range("I12")

        Application.EnableEvents = False

        If Target.Address = "$I$10" Then
            Range("I12").Value = (2208.5 / 54.872) * wind ^ 3
        Else
            Range("I10").Value = KWH * (2208.5 / 54.872) ^ (1/3)

        End If
    End If
    Application.EnableEvents = True
End Sub

Код, який ви редагували, працював! Дуже дякую! Формула виявилася такою: Діапазон ("I10"). Значення = ((KWH * 54,872) / 2208,5) ^ (1/3) Я працював з некрасивим рішенням, щоб визначити деякі клітинки за графіком з правильними даними, але це набагато елегантніше.
YouKnowWho

@YouKnowХто я оновив код, щоб відобразити цю зміну. Якщо ваша проблема вирішена, ви можете продовжити і позначити питання як відповідне, щоб воно було видалено зі списку питань "без відповіді".
Райстафаріан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.