Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel Vba无法在宏中命名单元格_Excel_Vba - Fatal编程技术网

Excel Vba无法在宏中命名单元格

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

我尝试在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
我在
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)。由于单元格不能有相同的名称,它可以解释为什么单元格不会被命名(但在这种情况下,第一个被命名的单元格应该有一个“否”的名称?)。谢谢大家的帮助。谢谢,我会记住的