Excel Vba无法在宏中命名单元格
我尝试在Excel中用宏命名单元格。代码如下:Excel Vba无法在宏中命名单元格,excel,vba,Excel,Vba,我尝试在Excel中用宏命名单元格。代码如下: Sub setHeader() Dim Wb As Workbook Dim Ws As Worksheet Dim Cell As Range Dim i As Integer Dim j As Integer Dim k As Integer Dim l As Integer i = 0 j = 0 k = 0 l = 0 Dim MyColu
Sub setHeader()
Dim Wb As Workbook
Dim Ws As Worksheet
Dim Cell As Range
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer
i = 0
j = 0
k = 0
l = 0
Dim MyColumnRange As Range
Dim MyRowRange As Range
Dim MyCellRange As Range
Set MyColumnRange = ActiveSheet.Range("E7:V8")
Set MyRowRange = ActiveSheet.Range("B10:B16")
Set MyCellRange = ActiveSheet.Range("E10:V16")
Dim MyColumnName As String
Dim MyRowName As String
Dim MyCellName As String
MyColumnName = "HC_"
MyRowName = "HL_"
MyCellName = "?"
For Each Cell In MyRowRange
Cell.Name = MyRowName + CStr(j)
j = j + 1
Next Cell
For Each Cell In MyColumnRange
If Not IsEmpty(Cell.Value) Then
Cell.Name = MyColumnName + CStr(i)
i = i + 1
End If
Next Cell
For Each Cell In MyCellRange
Cell.Name = MyRowName + CStr(k) + MyCellName + MyColumnName + CStr(l)
If l = (MyCellRange.Columns.Count - 1) Then
l = 0
k = k + 1
Else
l = l + 1
End If
Next Cell
End Sub
我在MyColumnRange
和MyCellRange
中的命名很好,但在MyRowRange
中我有一个错误
“对象范围的方法名称失败”
我不明白为什么 在MyRowRange中命名单元格时:
For Each Cell In MyRowRange
Cell.Name = MyRowName + CStr(i)
j = j + 1
Next Cell
您正在使用非常命名的变量
i
命名它们,但您正在增加非常命名的变量j
。可能您的意思是Cell.Name=MyRowName+Cstr(j)
因此,您实际上不需要转换为字符串,请尝试使用&而不是+例如:
For j = 1 to MyRowRange.cells.count
MyRowRange.cells(j).Name = MyRowName & j
Next j
我更改了你的for each循环(wich很好),只是作为一个其他方法的示例…这是否修复了错误,还是仍在抛出“对象范围的方法名称失败”?我只是像在空白表上一样运行代码,没有问题。它似乎100%正确。我不再有这个问题了,我也不知道为什么。也许我总是用CStr(I)代替CStr(j)。由于单元格不能有相同的名称,它可以解释为什么单元格不会被命名(但在这种情况下,第一个被命名的单元格应该有一个“否”的名称?)。谢谢大家的帮助。谢谢,我会记住的