【问题标题】:Insert columns only once when i first execute the macro and not again if i run the macro second/third time etc当我第一次执行宏时只插入一次列,如果我第二次/第三次运行宏等则不再插入
【发布时间】:2016-04-10 11:42:56
【问题描述】:

您能帮我解决我的 VBA 问题吗?我希望宏从 C 列开始插入 4 列,然后将每列命名如下。但是,每次我执行宏时,它都会不断添加 4 列,或者重复命令,我该如何停止呢?列应该只在第一次执行时插入,而不是之后。非常感谢。

ActiveWorkbook.Worksheets("SAPZK67C").Range("C:F").EntireColumn.Insert
ActiveWorkbook.Worksheets("SAPZK67C").Range("C1").Value = "Factor"
ActiveWorkbook.Worksheets("SAPZK67C").Range("D1").Value = "Materials"
ActiveWorkbook.Worksheets("SAPZK67C").Range("E1").Value = "Labour"
ActiveWorkbook.Worksheets("SAPZK67C").Range("F1").Value = "Overheads"
ActiveWorkbook.Worksheets("SAPZK67C").Columns("A:I").AutoFit

【问题讨论】:

  • 谢谢,完全按照罐头上说的做。棒极了!

标签: vba excel


【解决方案1】:

你可以试试这个

选项显式

Sub main()
Dim headings As Variant

headings = Array("Factor", "Materials", "Labour", "Overheads")

With ActiveWorkbook.Worksheets("SAPZK67C")
    If Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(.Range("C1:F1").value)), "|") <> Join(headings, "|") Then
        .Range("C:F").EntireColumn.Insert
        .Range("C1:F1").value = headings
    End If
    .Columns("A:I").AutoFit
End With

End Sub

它会检查所有标题是否到位以便“行动”。

我还认为.Autofit 总是必须运行

根据您的实际需要进行调整

【讨论】:

    【解决方案2】:

    只需将您拥有的代码包装在 if 语句中。这是未经测试的,但它应该看起来像这样:

    If ActiveWorkbook.Worksheets("SAPZK67C").Range("C1").Value <> "Factor" Then
      ActiveWorkbook.Worksheets("SAPZK67C").Range("C:F").EntireColumn.Insert
      ActiveWorkbook.Worksheets("SAPZK67C").Range("C1").Value = "Factor"
      ActiveWorkbook.Worksheets("SAPZK67C").Range("D1").Value = "Materials"
      ActiveWorkbook.Worksheets("SAPZK67C").Range("E1").Value = "Labour"
      ActiveWorkbook.Worksheets("SAPZK67C").Range("F1").Value = "Overheads"
      ActiveWorkbook.Worksheets("SAPZK67C").Columns("A:I").AutoFit
    End if
    

    【讨论】:

    • 编辑了我的答案,因为我收到了一些 VBA 语法
    • @Zakky 编辑使用不等于运算符
    猜你喜欢
    • 1970-01-01
    • 2017-07-14
    • 1970-01-01
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    相关资源
    最近更新 更多