2016-11-24 6 views
0

Здравствуйте Переполнение сообществоДобавить формулу с VBA в диапазоне ячеек

I`d хотел бы добавить формулу некоторые клетки (4, х), для каждого листа (ш). Я запускаю sub в for-loop в главном коде, который выполняется через каждый столбец (a). Я пробовал много вещей, но, к сожалению, мой код просто не будет работать:

Sub InsertFormula(ByVal sh As Worksheet, ByVal a As Long) 

Formel = "=TEXT(" & a & "$1;'TTT')" 
sh.Cells(4, a).Formula = Formel 

End Sub 

EDIT:

Sub InsertFormula(ByVal sh As Worksheet, ByVal a As Long) 

Formel = "=TEXT(R1C" & a & ",""TTT"")" 
sh.Cells(4, a).FormulaR1C1 = Formel 

End Sub 

Большое спасибо, отлично

+0

Почему «не будет работать»? Какое сообщение об ошибке вы получаете? –

+1

вы определили 'a' как свой столбец, но вы действительно отправляете его в' Sub' здесь как 'Long' (как Number). в вашем «Formel =» = TEXT («& a & "$1;« TTT »)« вы действительно нуждаетесь в нем в качестве буквы своего столбца, поэтому вам нужно преобразовать свой столбец из числа в письмо –

+0

, как я могу это сделать? очень –

ответ

1

работает в VBA вам нужно запятые для отдельной функции аргументы в формулах, независимо от ваших локальных настроек. (Вы можете обойти его, используя .FormulaLocal, но я не рекомендую его, так как он может не работать на других машинах)

Кроме того, как отметил Шай Радо, вы используете номер в качестве имени столбца. В этом случае я хотел бы использовать формат R1C1, поэтому вам не нужно преобразовать число в письмо, т.е.

Formel = "=TEXT(R1C" & a & ",""TTT"")" 
sh.Cells(4, a).FormulaR1C1 = Formel 
1

Это берет письмо столбца, в отличие от числа столбцов. Также я изменил формулу использовать " вместо ' и исправил TEXT формулы, как эти два являются частью той причины, формула была неисправной

Sub InsertFormula(ByVal sh As Worksheet, ByVal Col As String) 
    Dim Formel As String 

    Formel = "=TEXT(" & Col & "$1,""TTT"")" 
    sh.Range(Col & "4").Formula = Formel 

End Sub 
Sub test() 
    Call InsertFormula(ActiveSheet, "A") 
End Sub 
+0

Собирался обновить это с помощью обозначения «R1C1», а также «A1», однако @arcadeprecinct уже разместил ее. Выберите, какой из них вы предпочитаете – Tom

0

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

Sub InsertFormula(ByVal sh As Worksheet, ByVal a As Long) 

Formel = "=TEXT(R1C" & a & ",""TTT"")" 
sh.Cells(4, a) = Formel 

End Sub 
Смежные вопросы