2013-03-18 5 views
0

Я борюсь с назначением переменных значений в VBA. Я понимаю, как установить MYVAR приравнивается к ActiveCell.Value, как это:Значение переменной VBA Excel, равное формуле

ActiveCell.FormulaR1C1 = "=SUM(RC[1]:RC[7])" 
myVar = ActiveCell.Value 
MsgBox (myVar) 

Можно ли установить MYVAR равным формуле и пропустить ActiveCell.Value линию. Я пробовал это, но он не работает.

myVar = "=SUM(RC[1]:RC[7])" 

Благодарим за помощь.

ответ

2

Я не знаю, что является более широким охватом вашей цели, поэтому я представляю идею, которая может быть полезна. Однако он переключается с относительной ссылки FormulaR1C1 в относительную ссылку на методы Range.Offset().

myVar = WorksheetFunction.Sum(Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 7))) 
MsgBox myVar 
+0

Благодаря Kaz челюстью. Это то, что я искал. Я работаю над несколькими макросами и пытаюсь ослабить некоторые основы. Спасибо за вашу помощь! –

0

Да, вы можете. Сначала вы начинаете с установки переменной myVar, затем применяете ее к диапазону (ActiveCell или любой другой объект Range).

Dim myVar as String 
Dim r as Excel.Range 

Set r = ActiveCell 

myVar = "=SUM(RC[1]:RC[7])" 
r.FormulaR1C1 = myVar 
0

Если не нужна ваша формула, чтобы быть относительно активной ячейки, вы можете также использовать короткий [..] оценить заявление, например .:

MsgBox [SUM(B1:B7)] 
Смежные вопросы