2015-11-22 2 views
1

Я пытаюсь написать код VBA для чтения значения из другого листа и затем вычисления значения в текущем. Код, который я написал:Вычисление значений ячейки

Function tell_me2() 
Dim my_range As Range 
Dim sheet_number As Integer 
Dim my_row As Integer 
Dim my_column As Integer 
Dim my_value As Integer 
sheet_number = ActiveSheet.Index 
my_row = ActiveCell.Row 
my_column = ActiveCell.Column 
'MsgBox (sheet_number) 
'MsgBox (my_row) 
'MsgBox (my_column) 
'MsgBox (Worksheets(sheet_number - 1).Cells(my_row, my_column - 1)) 
my_value = Worksheets(sheet_number - 1).Cells(my_row, my_column - 1) 
'my_value = my_range.Value 
MsgBox ("12 " & my_value) 
'my_range = Worksheets(sheet_number - 1).Cells(my_row - 1, my_column - 1) 
'my_range.Activate 
Set my_range = Worksheets(sheet_number).Cells(my_row, my_column + 1) 
' have also tried 
Worksheets(sheet_number).Cells(my_row, my_column + 1) = my_value - 12 
my_range.Value = my_value - 12 
MsgBox ("All Done!") 
End Function 

При отладке я могу видеть, что my_value содержит правильное значение, но затем я получаю ошибку #value, а не значение, я хочу в правильной ячейке.

Может ли кто-нибудь указать мне в правильном направлении?

ответ

0

Вы просто пропустите выход для функции в VBA, это просто так:

Name_of_the_Function = OutPut 

OutPut может быть любой переменной, так что ваш код будет выглядеть следующим образом:

Sub tell_me2() 
Dim my_range As Range 
Dim sheet_number As Integer 
Dim my_row As Long 
Dim my_column As Long 
Dim my_value As Integer 

sheet_number = ActiveSheet.Index 
my_row = ActiveCell.Row 
my_column = ActiveCell.Column 

my_value = Worksheets(sheet_number - 1).Cells(my_row, my_column - 1) 


Set my_range = Worksheets(sheet_number).Cells(my_row, my_column + 1) 
MsgBox my_range.Address 
my_range.Value = my_value - 12 


MsgBox ("All Done!") 
End Sub 
+0

Это не имеет значения; Я не хочу, чтобы функция возвращала значение, я просто хочу, чтобы он установил значение ячейки. Я считаю, что проблема заключается в следующей строке: [code] Worksheets (sheet_number) .Cells (my_row, my_column + 1) = my_value - 12 [/ code] – user3474704

+0

Mkay, поэтому вы не используете его как функцию в Excel и не используете в VBA, так что на самом деле это суб. Попробуйте отредактировать! – R3uK

+0

Вы совершенно правы, это сделал трюк. Я не могу поверить, что у меня пропало нечто такое очевидное! Еще раз спасибо! – user3474704

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