我嘗試了下面的代碼,但不幸的是,它只命名了范圍內的最后一個單元格,而不是范圍內的每個單元格。
我正在嘗試運行此回圈,以便從單元格 A1 開始,任何非空單元格都被命名為“Guidance 1”、“Guidance2”等等。
以下是我到目前為止的代碼:
Sub GiveAllCellsNames()
Dim wb As Workbook
Set wb = ActiveWorkbook
Dim R As Range
Dim NameX As String
Static I As Long
I = I 1
NameX = "Guidance" & I
For Each R In Range("A1:A390").Cells
If R.Value <> "" Then
With R
wb.Names.Add NameX, RefersTo:=R
End With
End If
Next R
End Sub
我已經嘗試過這個回圈,但沒有在“R”范圍變數上使用“with 陳述句”,但似乎仍然得到相同的結果。我還嘗試查找與此**命名**主題相關的文章以及回圈指南,但只能找到有關命名整個范圍而不是回圈的指南。
任何幫助,將不勝感激。
先感謝您。
uj5u.com熱心網友回復:
可以使用 Range 物件的 name 屬性添加命名范圍。
改變
wb.Names.Add NameX, RefersTo:=R
至
R.Name = NameX
I需要遞增并且名稱應該在回圈內更新。
Sub GiveAllCellsNames()
Dim wb As Workbook
Set wb = ActiveWorkbook
Dim R As Range
Dim NameX As String
Static I As Long
For Each R In Range("A1:A390").Cells
If R.Value <> "" Then
I = I 1
NameX = "Guidance" & I
With R
wb.Names.Add NameX, RefersTo:=R
End With
End If
Next R
End Sub
uj5u.com熱心網友回復:
命名非空白單元格
Sub NameAllCells()
Const BeginsWithString As String = "Guidance"
Dim wb As Workbook: Set wb = ThisWorkbook
Dim ws As Worksheet: Set ws = wb.Worksheets("Sheet1")
Dim rg As Range: Set rg = ws.Range("A1:A390")
Dim Data() As Variant: Data = rg.Value
DeleteNamesBeginsWith wb, BeginsWithString
Dim r As Long
Dim n As Long
For r = 1 To UBound(Data, 1)
If Len(CStr(Data(r, 1))) > 0 Then
n = n 1
wb.Names.Add BeginsWithString & n, rg.Cells(r)
End If
Next r
End Sub
Sub DeleteNamesBeginsWith( _
ByVal wb As Workbook, _
ByVal BeginsWithString As String)
Dim nmLen As Long: nmLen = Len(BeginsWithString)
Dim nm As Name
For Each nm In wb.Names
If InStr(1, nm.Name, BeginsWithString, vbTextCompare) = 1 Then nm.Delete
Next nm
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/519599.html
