嗨大家我是VBA的新手,我正在尝试运行下面的代码,但我遇到了困难。 当我运行代码时没有任何反应。我没有输出。
我有三个专栏:FT
,cost
和weight
。
我想要做的是在IF
列中运行Ft
语句以获取ST
,然后将cost
和weight
列中的数字乘以st
。
例如:低于7 * 10然后返回O
列中的数据。
我已将IF
语句返回的数据保存在数组中,然后尝试将它们复制到O
列中,但它无法正常工作。但是,当我从Excel单元格运行该函数时,它可以正常工作。
非常感谢您的帮助。
FT
ST
电子商务
成本
7
5
重量
10
8
Public Sub main2()
Dim ft As Range
Dim ws As Excel.Worksheet
Set ws = Application.ActiveSheet
Set ft = ws.Range("b2:b365")
ecco2 = ecco(ft)
End Sub
Function ecco(ft As Range) As Long
Dim x As Variant
Dim L As Long
Dim H As Long
Dim netarray() As Long
For Each x In ft
If ft = "st" Then
L = x.Offset(0, 1) * x.Offset(0, 3)
Else
ecco = 0
End If
ecco = L
ReDim Preserve netarray(L)
netarray(L) = L + 1
Next x
For i = LBound(netarray) To UBound(netarray)
ActiveSheet.Range("o2").Offset(1, 0).Select
Next i
End Function
要从函数中返回数据,您需要执行以下操作:
Private Function ecco (ByRef ft as Range) as Long
'Insert your logic
ecco = whatValueAreYouReturning
End Function
如果要将单元格的值设置为某个值,可以在main2中执行此操作:
wb.Range("O2").offset(myRowOffset,0).value = ecco(myInput)
' I reccomend changing ecco() to a function with no loop, and put the loop in main2()
关于解决方案的想法:
关于代码的几点建议:
ws.Range("O2").Offset(myOffset, 0).value = myValue
ws.Range("O2").Offset(myOffset, 0).Formula= myFormula
我会修复子和功能,但我实际上并不知道你要去哪里,所以我会留给你:)