Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Кавычки для ссылки на строку и ячейку

Автор вопроса: Nicholas KanОтветов: 1

Мне нужно преобразовать формулу Excel в коды VBA, однако я пытался много раз, но безуспешно. Ниже приведена формула, которую мне нужно преобразовать.

=IF(G7959<0, "Delivered to end customer " & E7959, "To be delivered to end customer " & E7959)

Ниже показано, что я пробовал, но безуспешно: параметр IC_inventory_new_row представляет переменный индекс строки. Может кто поможет посмотреть и посоветовать?

IC_inventory_WS.Cells(IC_inventory_new_row, 15).Formula = "=IF(G" & IC_inventory_new_row + 1 & "<0, " & "Delivered to end customer" & "E" & IC_inventory_new_row & "," & "To be delivered to end customer " & "E" & IC_inventory_new_row & ")"
  • Лучше всего использовать Debug.Print и проверить конкатенацию формулы. Вы начнете замечать, что для реализации строковых значений вам нужно удвоить/утроить кавычки. Кстати, для этого вам не нужно отделять запятую от остальной части строки. JvdV 10.07.2020

stringvbaquotes

Ответы

Ответ 1 · рейтинг 1 · FaneDuru

Попробуйте, пожалуйста:

IC_inventory_WS.Cells(IC_inventory_new_row, 15).formula = "=IF(G" & IC_inventory_new_row + 1 & _
            "<0, ""Delivered to end customer ""&E" & IC_inventory_new_row & _
            ", ""To be delivered to end customer ""&E" & IC_inventory_new_row & ")"

Но это можно написать так, чтобы не нуждаться в итерации. Я имею в виду, чтобы бросить его во всем диапазоне сразу. Попробуйте этот способ, который должен делать то, что вам нужно, если я правильно понял, что нужно:

IC_inventory_WS.Range("O2:O" & lastRow).formula = "=IF(" & Range("G2").address(0, 0) & _
            "<0, ""Delivered to end customer ""&" & Range("E2").address(0, 0) & _
            ", ""To be delivered to end customer ""&" & Range("E2").address(0, 0) & ")"

Если нет, укажите, что это делает против того, что вам действительно нужно.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы