使用VBA在Excel中填充文本

我正在写一个vba脚本,它从一张纸上select一个必要的值,并把它放在另一张纸上的一个单元格中。 我目前的脚本将确定适当的价值,但我不能得到的价值表。 该函数总是返回!值错误。 代码在以下摘录的第6行中断:

Function PrintTest(Cell) Dim iRow As Integer Dim bs As Worksheet Set bs = ThisWorkbook.Sheets("By System") iRow = Cell.Row bs.Cells(iRow, 6).Value = "Hello World" End Function 

我也尝试使用.Text但也没有工作。 任何帮助,将不胜感激。

注意:在实际的脚本中,文本将从另一个表中播种,并将其存储在一个variables中。 我没有find一种方法来获取相同的文本到许多不同的单元格。

更新:我忘了提及, Cell正在从Excel电子表格中作为空单元格G4传递。 Row被定义为4.此外,不知道这是否有帮助,但要调用我在我的名为“By System”的Excel工作表中input“= PrintTest(G4)”的函数

更新2:Scott Holtzman在评论中回答了这个问题。 对于那些好奇的人,你不能写入单元格内调用的UDF中的单元格。 修复是从一个button调用它。

用单元格(行,列)设置单元格值。值=“某些文本”如果工作表处于活动状态,则不需要完全限定地址。 如果您激活工作表,则可以随时使用单元格。 如果您必须从不同的工作表检索数据,则必须使用工作表名称(即“工作表”)来限定地址。单元格(行,列)。值。

另外你的代码有Row = Cell.Row,但是你不是说什么单元格是活动的。 在这种情况下,你会得到一些任意的价值。 所以这可能是你的错误所在。 Cell.Row = ????? Row也是一个优秀的词汇。 使用类似intRow的variables。 例如intRow = 25。 单元格(intRow,6).Value =“我的单元格”。 如果游标在单元格上,你可以说intRow = ActiveCell.Row。

当你有这样的问题时,在你的代码中设置一个断点(在你的例子中,Set语句)。 然后运行你的代码。 当它停在set语句中时,你可以按F8来一步一步地检查你的variables。 然后你会看到Row是一个真正的数字还是垃圾。

希望有所帮助