使用Worksheet对象而不是按名称检索时的不同行为

时间:2014-08-28 17:25:08

标签: excel vba excel-vba

今天我尝试在VBA编辑器(项目窗口)中使用工作表(“sheet_name”)替换其名称,该编辑器也匹配同名对象。例如,我在Excel中查看时有一个名为“STRUCTURE”的标签,但它实际上在VBA编辑器中命名为“Saisie”。在下面的代码中,如果将Worksheets("STRUCTURE")替换为Saisie,它应该给出相同的结果,但PasteSpecial操作不会粘贴任何内容,也不会产生错误消息。我已尝试使用“执行”窗口检查是否引用了正确的范围(调用cell.Address返回正确的地址)并在正确的工作表上(调用Saisie.Name返回“STRUCTURE”)。

两种符号之间的语义是否存在差异,或者我在其他地方搞砸了吗?

以下是使用工作表(“STRUCTURE”)的工作代码,在替换为Saisie时会中断。

Public Sub ForcerFormules()
    Dim cell As Range, last_row As Range

    Set last_row = Saisie.Range("B65535").End(xlUp).EntireRow

    'Ligne 10 = ligne des titres = saisie vide donc on ignore
    If last_row.Row <> 10 Then
        Application.ScreenUpdating = False
        Application.Calculation = xlCalculationManual

        For Each cell In Worksheets("STRUCTURE").Range("A8:DB8")
            If cell.Formula <> "" Then
                cell.Copy
                Worksheets("STRUCTURE").Range(cell.Offset(3, 0), Intersect(cell.EntireColumn, last_row)).PasteSpecial xlPasteFormulas
            End If
        Next cell

        Worksheets("STRUCTURE").Range("A1").Activate
        Application.ScreenUpdating = True
        Application.Calculation = xlCalculationAutomatic
    End If
End Sub

1 个答案:

答案 0 :(得分:0)

如果您遇到问题,请添加:

Dim Saisie As Worksheet
Set Saisie = Sheets("STRUCTURE")

之前

Set last_row = Saisie.Range("B65535").End(xlUp).EntireRow