Vba 无法命名宏中的单元格

Vba fail to name cell in macro

我尝试在 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 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

我在 MyColumnRangeMyCellRange 中的命名效果很好,但是对于 MyRowRange 我有错误

"method name of object range failed"

我不明白为什么。

当您在 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 循环(这很好),只是作为其他方法的示例...