2013-07-18 4 views
1

Я пытаюсь вставить формулу для Excel с помощью VBA, но она не работает. Он возвращает ошибку времени выполнения 1004. Я попробовал несколько трюков или ответы здесь, но они, похоже, не очень уместны для моего дела.ActiveCell.Formula Ошибка выполнения VBA

Вот код:

ActiveCell.Formula = "=COUNTIFS('DataSheet_B'!$C$4:$C$13268;B6;'DataSheet_B'!$M$4:$M$13268;A6;'DataSheet_B'!$J$4:$J$13268;$G$5)" 

На втором этапе, я пытаюсь заменить 13268 в $C$13268 на переменную, которая изменяется динамически. Мне нужно только вставить его в формулу. Это основная причина, по которой я пытаюсь жестко закодировать формулу.

Кроме того, я использую следующую формулу:

Dim sVal As String 
    sVal = "13268" 

ActiveCell.FormulaR1C1 = "=COUNTIFS(DataSheet_B!R4C3:R[" & sVal & "]C3,RC[-5],DataSheet_B!R4C13:R[" & sVal & " ]C13,RC[-6],DataSheet_B!R4C10:R[" & sVal & " ]C10,R5C7)" 

Однако, он не возвращает второй знак доллара из $C$13268

Спасибо

+0

использование отладчика. посмотрите, какое значение ваша динамическая переменная удерживает при ошибке выполнения. –

+0

Я еще не на этом шаге. Я хочу, чтобы статическая формула работала первой. Я пробовал динамическую версию с другой формулой, но она отлично работала. Часть кода выше не работает. – Helios

+1

попробуйте 'ActiveCell.Formula =" = COUNTIFS ('DataSheet_B'! $ C $ 4: $ C $ 13268, B6, 'DataSheet_B'! $ M $ 4: $ M $ 13268, A6, 'DataSheet_B'! $ J $ 4: $ J $ 13268 , $ G $ 5) "' –

ответ

0

Заменить все ;точки с запятой с ,запятыми, чтобы начать с

ActiveCell.Formula = "=COUNTIFS('DataSheet_B'!$C$4:$C$13268,B6,'DataSheet_B'!$M$4:$M$13268,A6,'DataSh‌​eet_B'!$J$4:$J$13268,$G$5)" 

, если вы хотите использовать переменную внутри строки, то

Dim sVal As Long 
    sVal = 13268 

ActiveCell.Formula = "=COUNTIFS('DataSheet_B'!$C$4:$C$" & sVal & ";B6;'DataSheet_B'!$M$4:$M$" & sVal & ";A6;'DataSheet_B'!$J$4:$J$" & sVal & ";$G$5)" 
+0

Как насчет использования целого числа (int) вместо long .. + int +, похоже, не работает. – Helios

+1

«Целое» вы имеете в виду? использование: 'dim myInt as Integer', знать [его пределы] (http://msdn.microsoft.com/en-us/library/office/aa164754 (v = office.10) .aspx) –

+0

Длинные работы отлично ! спасибо – Helios

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