簡體   English   中英

如何在字符串 VBA 中分配范圍?

[英]How to assign range in a string VBA?

我有一個代碼可以根據另一個單元格中的值突出顯示一個單元格中的單詞。 當我分配FindW = Range("X1")時,它工作得很好。 但是,當我將范圍 eg: ("X1:X1000")分配給字符串值FindW時,代碼似乎不起作用,我找不到解決此問題的方法。

有人有什么主意嗎?

請參閱下面的代碼:


Dim Rng As Range
Dim FindW As String
Dim xTmp As String
Dim x As Long
Dim m As Long
Dim y As Long
Dim ws As Worksheet

Set ws = ThisWorkbook.Worksheets("Übersicht")

Application.ScreenUpdating = False
Application.EnableEvents = False
    

With ws

FindW = Range("X1:X1000")
y = Len(FindW)



For Each Rng In Range("C:H")
  With Rng
    m = UBound(Split(Rng.Value, FindW))
    If m > 0 Then
      xTmp = ""
      For x = 0 To m - 1
        xTmp = xTmp & Split(Rng.Value, FindW)(x)
        .Characters(Start:=Len(xTmp) + 1, Length:=y).Font.ColorIndex = 3
        xTmp = xTmp & FindW
      Next
    End If
  End With
Next Rng
     
End With
End Sub

您不能將多個單元格的Range值直接放入單個String變量中。 但是,您可以創建一個String數組並將每個單元格值單獨存儲在String數組中。

最簡單的解決方案是只使用Variant變量,並將范圍值直接放入其中,如下所示:

Dim mrange As Range
Dim mVariant As Variant
mVariant = myRange.Value

如果你真的需要你的變量是一個String ,有多種方法可以做到這一點:

例如,您可以使用以下方法循環遍歷 Array 的每個單元格:

For each mCell in mRange.Cells
    mString(i) = mCell.Value
    i = i + 1
Next mCell

mRange 是您的范圍,mString 是一個字符串數組。 此解決方案需要您知道范圍內有多少個單元格,因為字符串數組需要定義一個大小。

如果您不知道 Range 的大小,可以添加一個步驟並使用 Variant 變量。
這里

暫無
暫無

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

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