2016-12-14 91 views
-2

在Excel 2013我希望,如果有人可以使代码添加1个空白栏基于用户输入他们点击这个按钮是一个ActiveX控件后的电子表格。该列将根据我的表中有多少行结束,这意味着如果有10行,我不应该在电子表格的第11行看到一列。按钮添加列?

我不断收到一个错误说应用程序定义或对象错误我把我要添加列后,我甚至都尝试帽的小写和同样的错误出现。

Private Sub CommandButton2_Click() 

Dim x As String 
x = InputBox("Enter a column that you want to add: ", "What column?") 
If x = "" Then Exit Sub 

ColumnNum = x 
Columns(ColumnNum & ":" & ColumnNum).Insert shift:=xlShiftRight 
Columns(ColumnNum - 1 & ":" & ColumnNum - 1).Copy Range("A1" & ColumnNum) 
Columns(ColumnNum & ":" & ColumnNum).ClearContents 

End Sub 
+1

请仔细阅读[问],并包括问题(不是截图)的代码。 – gravity

回答

1

这将让你开始:

Dim x As Variant 
    Dim ColumnNum% 
    x = InputBox("Enter a column that you want to add: ", "What column?") 
    If x = "" Then Exit Sub 
    ColumnNum = x 
    ThisWorkbook.Sheets("Sheet1").Columns(ColumnNum).Insert shift:=xlRight 

    ThisWorkbook.Sheets("Sheet1").Columns(ColumnNum - 1).Copy 

    'THe line above doesnt make any sense whatsoever. 
    'Im not going to try and trouble shoot it but it seems like you dont understand how to 
    ' properly scuplt things. Youll notice i changed how you strucutred the .copy part. 
    'THe part that doesnt make sense to me is the Range section. 

    ThisWorkbook.Sheets("Sheet1").Columns(ColumnNum).ClearContents 

有几件事你的代码错误。

  1. 您需要将Option Explicit放在代码的顶部。你没有声明你的变量。
  2. 你输入框需要声明为变体
  3. 当我玩弄这个清楚你没有完全引用什么列需要插入什么表。请注意我的“的ThisWorkbook .....”
  4. 你的if语句结构不当,以及。

我建议你花一些时间对一些基本阅读起来比较:)

+0

我不明白你的意思是通过引用哪些列在哪些表中?在代码方面?因为我打算让这个按钮具有普遍意义,它不会影响表的大小,它会一直创建新的列直到表行结束,我觉得如果在代码中放入特定的表单和列不会使其具有普遍性?既然如果这些变化,我必须改变代码为weLL? – Deathkamp

+0

@Deathkamp这很好,但你仍然需要完全限定你想改变的东西。如果没有指定某种方式需要更改的东西,编译器将无法知道book2中sheet1与book2中sheet2之间的区别。 –

+0

很酷。谢谢。 – Deathkamp