VBA Excel表扩展而不是创建

时间:2018-07-27 13:32:03

标签: excel-vba

所以我的excel工作表中有一个错误,我无法在机器上重现该错误,但是却以某种方式使其他人的计算机上的内容不断出错。

我制作了一个子程序,该子程序从数据库中获取数据并在excel中创建表。在这种情况下,它是采矿项目。

它简单地选择第一个单元格,在向右移动时找到第一个空单元格,写标题,用它创建一个表,然后用另一个子填充它。当我运行它时,一切都会顺利进行,但是当同事尝试使用它时,它将以某种方式扩展前一个表,然后在尝试创建新表时崩溃,因为两个表不能重叠。

初始布局: Initial layout

应该发生的事情:What's supposed to happen/ happens on my machine

我的同事得到的是:What my coworkers get

这是该子项的VBA代码:

Public Sub creerTable(Nom As Variant)

Dim cellule As Range
' se placer
Set cellule = ActiveWorkbook.Worksheets("DATA").Range("A1").End(xlToRight).Offset(0, 1)
Do While cellule.Value <> "" Or Not IsEmpty(cellule)
    Set cellule = cellule.Offset(0, 1)
Loop

'cr?er le header
cellule.Interior.Color = vbBlue
cellule.Value = Nom

'cr?er la table
ActiveSheet.ListObjects.Add(xlSrcRange, cellule, , xlYes).Name = Nom

End Sub

编辑:在我同事的计算机上进行了更多测试之后,我确定该问题很可能与excel设置有关。在他们的情况下,每当在表的右边写入内容时,表就会扩展以覆盖它。一些谷歌搜索发现这是一种自动纠正的行为。我想我必须停用自动更正的特定选项。

2 个答案:

答案 0 :(得分:1)

答案真是愚蠢。问题是excel中的自动更正设置。我要做的就是添加以下行:

Application.autocorrect.AutoExpandListRange = False

答案 1 :(得分:0)

尚不清楚此代码如何在您的计算机上工作,但在您的同事上如何工作。我怀疑输入必须有所不同,但这是您(可以访问输入,但我们没有)要自己解决。通常:不一致不可能存在,所以当出现不一致时,检查一下输入,通常会发现输入数据中存在差异,从而导致输出不一致。

我会注意到范围对象的End方法可能并不可靠,特别是在以下情况下,我观​​察到Range("A1").End(xlToRight).Address这样的情况在列A,B和C为每个单独的ListObject表:

enter image description here

在这种情况下也是:

enter image description here

似乎您尝试找到 next 空单元格/列(可能在两个或多个非空单元格/列之间)。 应该微不足道,但是我们需要了解 next 工作表上已有的东西相关吗?

您是否正在尝试在名为“Tâches”(或单元格值=“Tâches”)的ListObject之后的 之后找到下一个空单元格?