【发布时间】:2019-07-15 13:15:11
【问题描述】:
我编写了这个函数,它应该从选定的范围中获取用户定义的单元格,并将其值与用户定义的数字相加或相乘。输出应该是一个包含一个已更改单元格的数组。
我能够编译它;但是,我不能调用它。
Function Macro1(cellref As Range, row_number As Long, column_number As Long, x As Double, method As Integer) As Variant
'Number, which will be added or multiplied by chosen cell value in an array
'One for multiplication, two for addition
If method = 1 Then
Cells(row_number, column_number) = Cells(row_number, column_number) * x
ElseIf method = 2 Then
Cells(row_number, column_number) = Cells(row_number, column_number) + x
End If
Result = Macro1
End Function
Sub try()
Macro1(Range("A1:AX3").Select, 2, 2, 0.5, 1) = Result
End Sub
运行此代码时,我收到错误消息“运行时错误 424,需要对象”。 Macro1(Range("A1:AX3").Select, 2, 2, 0.5, 1) = Result 行以红色突出显示
然后我尝试了
Function Macro1(cellref As Range, row_number As Long, column_number As Long, x As Double, method As Integer) As Variant
'Number, which will be added or multiplied by chosen cell value in an array
'One for multiplication, two for addition
If method = 1 Then
Cells(row_number, column_number) = Cells(row_number, column_number) * x
ElseIf method = 2 Then
Cells(row_number, column_number) = Cells(row_number, column_number) + x
End If
Result = Macro1
End Function
Sub try()
Macro1(Worksheets("Macro1").Range("A1:AX3"), 2, 2, 0.5, 1)
End Sub
但我收到“类型不匹配错误 13”消息。 Sub try() 行以黄色突出显示,其下方的行以红色突出显示
【问题讨论】:
-
在
Cells(row_number, column_number) * "x"中,"x"是文本而不是变量。将其更改为Cells(row_number, column_number) * x与+ "x"相同 -
@Pᴇʜ 完成,但我仍然收到相同的错误消息
-
请告诉您在哪几行中出现错误。
-
Range("A1:AX3").Select应该只更改为Range("A1:AX3")该函数要求将Range类型传递给它。相反,您将传递.Select方法的输出在范围内(变体,而不是范围),而不仅仅是传递范围本身。所以:Macro1(Range("A1:AX3"), 2, 2, 0.5, 1) = Result -
在这段代码中,什么是“原始数组”。您正在调用一个函数,但从该函数中什么也得不到。
Result = Macro1没有意义,因为Result一个你没有声明的变量被设置为空,因为Macro1从未在它的函数中设置。我在这里看不到任何数组,只是对单元格和范围的操作。我相信这里存在层层误解。