2013-04-03 2 views
2

Heres мой код:Создание макроса, который использует функцию с переменной

Dim N As Single 
N = ActiveCell.Offset(0, 0).Value 
E = 1 - N 

ActiveCell.Offset(0, 1).Range("A1").Select 
ActiveCell.FormulaR1C1 = "=-SUM(R[E]C:R[-1]C)" 
ActiveCell.Offset(0, 1).Range("A1").Select 
ActiveCell.FormulaR1C1 = "=-SUM(R[E]C:R[-1]C)" 
ActiveCell.Offset(0, 1).Range("A1").Select 
ActiveCell.FormulaR1C1 = "=-SUM(R[E]C:R[-1]C)" 
ActiveCell.Offset(1, 0).Range("A1").Select 

Я хочу, чтобы пользователь макросъемки, чтобы выбрать ячейку со значением (например, 5), как это будет слот для 5-го ряда значений. Я хочу, чтобы программа находила отрицательную сумму всех значений до нее (1,2,3 и 4).

+2

Я думаю, что я могу ответить на этот вопрос гораздо лучшим решением, чем вы, кажется, пытаетесь, но можете ли вы, пожалуйста, более четко указать данные, которые у вас есть, и что вы хотите с ним делать? – user2140261

ответ

0

Хотя я не в пользу .Select. См. this.

Но это то, что вы пытаетесь? E - переменная. Внутри двойных кавычек он ведет себя как строка :)

Sub Sample() 
    Dim N As Single 
    N = ActiveCell.Offset(0, 0).Value 
    E = 1 - N 

    ActiveCell.Offset(0, 1).Range("A1").Select 
    ActiveCell.FormulaR1C1 = "=-SUM(R[" & E & "]C:R[-1]C)" 
    ActiveCell.Offset(0, 1).Range("A1").Select 
    ActiveCell.FormulaR1C1 = "=-SUM(R[" & E & "]C:R[-1]C)" 
    ActiveCell.Offset(0, 1).Range("A1").Select 
    ActiveCell.FormulaR1C1 = "=-SUM(R[" & E & "]C:R[-1]C)" 
    ActiveCell.Offset(1, 0).Range("A1").Select 
End Sub 
+1

Возможно, это то, о чем попросил ОП - но это только обнадеживающий уродливый код? – Floris

+0

Нет, я не ободряю уродливый код;) Пожалуйста, см. Первую строку моего сообщения. В моем сообщении основное внимание уделяется тому, как использовать переменную со строкой :) –

+0

Справедливая оценка о первой строке! – Floris

0

Я мог бы предложить ниже в качестве альтернативы избежать отборным?

Sub SampleWithoutSelect() 
Dim N As Single 
N = ActiveCell.Offset(0, 0).Value 
E = 1 - N 

for iIndx=0 to -3 step -1 
    range(activecell.offset(iindx,0).formular1c1="=-SUM(R[" & E & "]C:R[-1]C)" 
next 

End Sub 

это то, что вы хотите - или я чего-то не хватает?

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