VBA Sub从函数返回输出

时间:2018-10-15 11:38:42

标签: excel vba

大家好我是VBA的新手,我正在尝试运行以下代码,但遇到了困难。
当我运行代码时,什么也没有发生。我没有输出。

我有三列:FTcostweight
我想要做的是在列IF中运行Ft语句以获得ST,然后将cost和{{1}中的数字相乘}列,对应于weight
例如:7 * 10以下,然后返回列st中的数据。

我已经将O语句返回的数据保存在数组中,然后尝试将它们复制到列IF中,但是它不起作用。但是,当我从Excel单元格运行该函数时,它没有任何问题。

非常感谢您的帮助。

FT

ST

电子商务

费用

7

5

体重

10

8

O

1 个答案:

答案 0 :(得分:0)

要从函数中返回数据,您需要执行以下操作:

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()

解决方案的想法:

  • 如果您使用公式完成此操作,建议您采用这种方式,因为它们更易于维护。

代码上的一些指针:

  • 尝试使您的变量名长于“ H”,因为无论您是我还是我,一个星期的时间都将知道这意味着什么
  • 如果要设置单元格的值(例如,在O列中),可以执行以下操作:

    ws.Range("O2").Offset(myOffset, 0).value = myValue

    ws.Range("O2").Offset(myOffset, 0).Formula= myFormula

我会修复sub和function,但实际上我不知道您要使用它的什么地方,所以我会把它留给您:)