Я знаю, что topi c "Формулы Excel не обновляются" много обсуждались на многих форумах, но я не нашел полезного решения своей проблемы.
В рабочем листе я использую встроенные формулы Excel, а также собственные функции, написанные с помощью VBA в модуле рабочего листа, и я ссылаюсь на них внутри рабочего листа.
В ячейке A1 есть двоичный код, который генерируется из шестнадцатеричного кода. Двоичный код вычисляется в ячейке B1.
Давайте возьмем следующий код в качестве примера: 100001101110
Ячейка C1 содержит следующее:
= DecodeVal (B1; 0 ; 20)
Если я теперь вставлю шестнадцатеричный код в A1, и двоичный код будет создан в B1, ячейка C1 отображает ошибку #VALUE!
.
Если I go вернитесь в ячейку A1, щелкните в текстовом поле и снова нажмите enter, отобразится правильное значение (= 2158).
Почему сначала возникает ошибка Value, а не если я нажимаю enter еще раз?
Если я вставлю двоичный код непосредственно в текст, ошибка вообще не возникнет.
Это функция, о которой я говорю:
Public Function DecodeVal(value, start As Integer, length As Integer) As Long
Dim abschnitt As String
Dim i As Integer
Dim valueText As String
valueText = value.Text
If (Len(valueText) - start - length + 1 > 0) Then
abschnitt = Mid(valueText, Len(valueText) - start - length + 1, length)
Else
If (Len(valueText) > start) Then
abschnitt = Left(valueText, Len(valueText) - start)
length = Len(valueText) - start
End If
End If
Do
If (Int(Left(abschnitt, 1)) = 1) Then
DecodeVal = DecodeVal * 2 + 1
Else
DecodeVal = DecodeVal * 2
End If
abschnitt = Right(abschnitt, length - 1)
length = length - 1
Loop While length > 0
End Function
Да, параметры расчета установлены автоматически c.
Есть предложения?
Спасибо