簡體   English   中英

在Excel VBA中使用相對單元格引用循環REPT函數

[英]Looping REPT Function with Relative Cell Referencing in Excel VBA

我正在嘗試創建一個宏,以生成單元內圖形顯示,如http://www.juiceanalytics.com/writing/more-on-excel-in-cell-graphing所示 我仍然是VBA的新手,並且幾乎沒有使用工作表函數的經驗; 這是我到目前為止所嘗試的。

如果有人可以幫我解決這個問題,那就太棒了,因為我拖着谷歌搜索了什么,找不到任何東西!

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))。 任何人都知道如何做到這一點或我的代碼片段出了什么問題?

先謝謝你們。


作為背景信息,我有一個小表格,標題為“發件人”,“電子郵件”,“字母”,“傳真”,“總計”和“圖形”。 “總計”是前面三列的總和,我希望圖形包含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

不確定代碼的上下文,因為如果沒有設置其他變量,它將無法工作,但我認為這可以實現您想要實現的目標,並且應該指向更新代碼的正確方向。

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

顯然,您需要使用自己的方法來定義要使用的范圍。

同樣,盡管代碼處理文本或空單元格,但如果為負值,則會出錯。 如何最好地解決此問題可能取決於您的需求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM