Table.ListRows.Add可在我的计算机上正常工作,但在我们的20个计算机化学实验室中没有其他计算机

时间:2019-07-31 21:24:28

标签: excel vba

希望这是有道理的。我创建了一个宏,该宏将从母版表中读取信息,根据分析物的名称创建工作表,然后在创建工作表后,它将把8个单元格的信息从母版表转移到新创建的表中分析物表。

在我的计算机上,当我使用跨步运行代码时,运行SetNewAnalyte = Table.ListRows.Add行时,将创建新行,并且表的6行已用无论在表的第一行上找到任何信息,那么当set语句的With部分运行时,该数据就会被覆盖。

在每台其他计算机上,当我使用跨步运行代码时,运行Set NewAnalyte = Table.ListRows.Add行时,将创建新行,并且表的6行已用无论在表的第一行上找到任何信息,那么当set语句的with部分运行时,所有数据都将被覆盖。例如,我的表中有3个条目,因为对第3个条目运行with语句,所以该行上的所有条目都将同时被覆盖。

在我的计算机上运行时,所有条目均与预期的不同。在所有其他计算机上,所有条目都类似于该表的最终条目,这是不应该发生的。 Excel文件存储在网络区域中,每个人都访问相同的文件。该文件不包含外部引用(仅Activeworkbook)。

希望有人能提供帮助,因为我不知道为什么会这样。

1)我试图确保excel版本和Windows版本与创建代码的版本相同(无效)

For Each Cell In AnalyteName
    If Cell.Interior.ColorIndex <> 35 Then
        WorkSheetName = Cell.Value
        For Each ws In wb.Worksheets
            If WorkSheetName = ws.Name Then
                Set Table = ws.ListObjects(WorkSheetName)
                Set NewAnalyte = Table.ListRows.Add
                    With NewAnalyte
                        .Range(1) = "='Standard List '!" + Cell.Offset(0, -1).Address
                        .Range(2) = "='Standard List '!" + Cell.Offset(0, 1).Address
                        .Range(3) = "='Standard List '!" + Cell.Offset(0, 2).Address
                        .Range(4) = "='Standard List '!" + Cell.Offset(0, 3).Address
                        .Range(5) = "='Standard List '!" + Cell.Offset(0, 4).Address
                        .Range(6) = "='Standard List '!" + Cell.Offset(0, 5).Address
                    End With
                Range(Cell.Offset(0, -2), Cell.Offset(0, 5)).Interior.ColorIndex = 35
            End If
        Next ws
    End If
Next Cell

1 个答案:

答案 0 :(得分:1)

尝试在设置公式时更加明确:

With NewAnalyte.Range
   .Cells(1).Formula = "='Standard List '!" + Cell.Offset(0, -1).Address
   .Cells(2).Formula = "='Standard List '!" + Cell.Offset(0, 1).Address
   .Cells(3).Formula = = "='Standard List '!" + Cell.Offset(0, 2).Address
   'etc      
End With