如何使用vba创建表?

时间:2015-10-08 08:15:16

标签: excel vba excel-vba named-ranges

我正在编写一个简单的代码来从数据库导入/导出中获取一些关键数字。我想让它变得用户友好,基本上是#34;一个按钮点击"给出结果。

当我编写代码时,我使用Alt + F11和" Play" =>有用。但当我插入Active X-Control" CommandButton1_Click"宏停止了。

这是(第一行):

         ActiveSheet.ListObjects.Add(xlSrcRange, Range("A$1:$Be$1500"), , xlYes).Name = _
    "Table1"

Range("Table1[#All]").Select
ActiveSheet.ListObjects("Table1").TableStyle = "TableStyleLight1"

与播放按钮完全相同的代码

我收到错误消息:

  

"运行时错误1004:

     

表格数据的工作表范围必须与创建的表格位于同一张纸上。"

有没有人有想法?

对我的代码进行改进,使表长度变量:一组中可能有更多行,而另一组中可能更少。

2 个答案:

答案 0 :(得分:1)

ActiveX命令按钮是工作表中的控件,因此您不会在代码中使用它时遇到任何引用问题,但您必须指定它们以使用相同的其他代码。

根据您的需要调整此项,如果不够,请告诉我:

Dim Ws As Worksheet
Set Ws = ThisWorkbook.Sheets("Sheet_Name")

Ws.ListObjects.Add(xlSrcRange, Ws.Range("A$1:$BE$1500"), , xlYes).Name = "New_Table_Name"
Ws.ListObjects("New_Table_Name").TableStyle = "TableStyleLight1"

根据您的需要调整Sheet_NameNew_Table_Name,这应该滚动!

答案 1 :(得分:1)

您还必须为源范围指定工作表,因为在工作表代码模块中,对RangeCells的任何未经限定的引用等同于Me.RangeMe.Cells并且是指包含代码的工作表上的范围(即在这种情况下按钮打开的工作表):

With ActiveSheet.ListObjects.Add(xlSrcRange, ActiveSheet.Range("A$1:$Be$1500"), , xlYes)
   .Name = "Table1"
   .TableStyle = "TableStyleLight1"
End With