在Excel VBA中使用相对单元格参考来循环REPT函数

我正在试图创build一个macros,它可以在http://www.juiceanalytics.com/writing/more-on-excel-in-cell-graphing上看到的单元格graphics生成。 我对VBA还是比较新的,几乎没有使用工作表函数的经验; 这是我到目前为止所尝试的。

如果有人能帮我解决这个问题,那就太好了,因为我已经抓住了Google,找不到任何东西!

Sub GraphsInCell() Dim inCellBar As String, barData As Long barData = ActiveSheet.Range("E4:E" & FinalRow).Value 'repeats "|" string based on Column E values in order to 'produce a small in-cell bar inCellBar = Application.WorksheetFunction.Rept("|", barData) For Each i In ActiveSheet.Range("F4:F" & FinalRow) With ActiveSheet.Range("F4:F" & FinalRow) .Value = inCellBar End With Next End Sub 

这是大量代码的一小部分,但其他一切正常。 有问题的代码都在上面。

我基本上需要让REPT函数使用相对单元格中的值作为'number_times'(例如= REPT(“|”,number_times))。 任何人都知道如何做到这一点或我的代码片段有什么问题?

在此先感谢家伙。


作为背景信息,我有一个标题为“发件人”,“电子邮件”,“信件”,“传真”,“总计”和“图表”的小表。 'Total'是前三列的SUM,我希望图包含REPT函数。 真的很简单的设置。


Lunatik的答案和Dick Kusleika的评论的最终代码示例如下:

 Sub GraphsInCell() Dim c As Range Dim TheRange As Range Set TheRange = Range("E4:E20") For Each c In TheRange.Cells If IsNumeric(c.Value) Then c.Offset(0, 1) = String(c.Value, "|") End If Next End Sub 

不知道你的代码的上下文,因为没有额外的variables被设置,它不会工作,但我认为这是你正在努力实现的,并应该指向正确的方向来更新你的代码。

 Sub GraphsInCell() Dim c As Range Dim TheRange As Range Set TheRange = Range("E4:E20") For Each c In TheRange.Cells If IsNumeric(c.Value) Then c.Offset(0, 1) = WorksheetFunction.Rept("|", c.Value) End If Next End Sub 

显然你需要使用自己的方法来定义正在使用的范围。

另外,尽pipe代码处理文本或空单元格,但会在负值上出错。 这可能是最好的处理可能取决于你的需求。