![](/img/trans.png)
[英]Excel VBA Macro Conditional Formatting By Referencing Cell Pair Relative Location
[英]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.