Отрицательные значения на основе условий VBA Excel не работают

#excel #vba

Вопрос:

Я хотел бы установить различную формулу для отрицательных и положительных значений.

Мой приведенный ниже код считается допустимым, но работает только формула для отрицательных значений.

  Dim wks As Worksheet
 Dim sunString As String
 Dim rng3 As Range

 sunString = "-"

 Set wks = ThisWorkbook.ActiveSheet

 Set rng3 = wks.Range("F2:F" amp; lRow)

With rng3
  If InStr(sunString, "-") > 0 Then
    Range("W2:W" amp; lRow).Formula = "=R2-U2-V2"
  Else
    Range("W2:W" amp; lRow).Formula = "=R2 U2 V2"
  End If
 

введите описание изображения здесь

Вторая формула (утверждение else) вообще не работает.
Что здесь не так?

Комментарии:

1. Что такое rng3 ? Вы ничего не назначили ему (или lRow ему )…. И ваш тест в настоящее время эквивалентен If InStr("-", "-") > 0 Then

2. Вам необходимо предоставить более подробную информацию, включая данные.

3. Я добавил данные rng3

4. With rng3 Он ни для чего не используется, вы вообще не ссылаетесь на него внутри блока with. Вы намеревались InStr или .Formula хотели посмотреть на какую-то ценность внутри rng3 ?

Ответ №1:

Почему бы не использовать единую формулу, включающую условие, и не избавиться от ненужного зацикливания?

 Sub LoopRange()
Dim wks As Worksheet
Dim lRow As Long
Dim rng As Range

    Set wks = ThisWorkbook.ActiveSheet

    lRow = wks.Cells(wks.Rows.Count, "F").End(xlUp).Row
    
    Set rng = wks.Range("W2:W" amp; lRow)

    rng.Formula = "=IF(F2<0,R2-U2-V2 ,R2 U2 V2)"

End Sub

 

Если данные в столбце F не являются числовыми, вы можете использовать эту формулу для проверки - .

 rng.Formula = "=IF(LEFT(F2)=""-"",R2-U2-V2 ,R2 U2 V2)"
 

Комментарии:

1. Он по-прежнему использует только вторую формулу R2 U2 V2

2. Что именно у вас есть в колонке F? Являются ли данные числовыми или текстовыми?

3. смотрите скриншот выше. Я думаю, это цифровой текст. Не число, а текстовая строка.

4. Я также попробовал что-то вроде этого: rng5. Формула = «=ЕСЛИ(F2=’ ‘,R2-U2-V2 ,R2 U2 V2)», но я получаю ошибку, определенную объектом или приложением

5. Я добавил в свой ответ формулу, которая будет проверять текстовые значения, начиная с - .