2013-10-08 2 views
0

Я пытаюсь написать формулу с 2 переменными в ячейку. формула в ячейке должна быть:Синтаксис VBA FormulaR1C1 с переменной

=(SUM('C:\Users\[Excel.xlsm]Sheet1'!H:H)-SUM('C:\Users\[Sheet1.xlsm]Sheet1'!I:I)) 

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

path = C:\Users\Excel.xlsm 'from msofiledialog 
sheetname = Sheet1 

Что мне не хватает?

Cells(1, 1).FormulaR1C1 = "=(SUM('[" & Path & "] " & sheetname & " '!C8) _ 
         -SUM('[" & Path & "] " & sheetname & " '!C9)) 

ответ

0

спасибо, это работает для меня:

Sub main 
Dim LastRow as String 
LastRow = Cells(Rows.Count, 1).End(xlUp).Row 
Dim path as String 
Path = "C:\users\username\Desktop\" 
Dim filename as String 
Filename = "Excel.xlsm" 
Dim sheetname as String 
sheetnameCR = "CR_" & supname 
Dim myrangeH as String 
Dim myrangeI as String 
myrangeH = ("H5:H" & LastRow) 
myrangeI = ("I5:I" & LastRow) 

Cells(1, 1).Formula = "=SUM('" & Path & "[" & Filename & "]" & sheetnameCR & "'!" & myrangeH & ")" & "-SUM('" & Path & "[" & Filename & "]" & sheetnameCR & "'!" & myrangeI & ")" 
End Sub 

я должен добавить переменную "RangeH", потому что в противном случае первенствовать взял клеток C8, вместо столбца H, который я хотел. это здорово, но даже после того, как я даю ему полный путь к желаемой ячейке, excel все еще спрашивает меня о пути к успеху с FileDialogOpen. любая идея почему?

+0

, когда я нахожу его следующим образом: Ячейки (1, 1) .FormulaR1C1 = "= (SUM ('C:/Users /" & Environ $ ("Username") & "/Desktop/[Excel].xlsm ] "& sheetnameCR &" '! C8) -SUM (' C:/Users/"& Environ $ (" Username ") &" /Desktop/[Excel].xlsm] "& sheetnameCR &" '!! C9)) " это не спрашивает меня о пути или что-то еще, я просто хотел, чтобы он был немного короче. –

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