创建和排序动态表

时间:2019-04-25 17:17:23

标签: excel vba

我有一个要在其中创建表的子目录,以便以后可以对其进行排序(其中一个列必须按降序排列)。

当我打开工作簿并在正确的工作表上时,该子项就会起作用。

当我尝试运行代码而不必同时查看工作表时,会弹出以下问题:

“ object_global'的方法'范围'失败”

“无法在中断模式下执行代码”

这是我的潜水员的样子。该行是静态的,但列长不时更改。

Sub create_the_table_investeringsforeninger()
' Best used when row length is static

Dim sht As Worksheet
Dim LastRow As Long
Dim Lrow As Long

Set sht = ThisWorkbook.Worksheets(2)

'Refresh UsedRange
ThisWorkbook.Worksheets(2).UsedRange

Lrow = Range("D" & Rows.Count).End(xlUp).Row
sht.ListObjects.Add(SourceType:=xlSrcRange, Source:=sht.Range("A2:F2" & Lrow)).Name = "Investeringsforeninger"

'Sort Range "Investeringsforeninger"
Range("investeringsforeninger").Sort Key1:=Range("F2"), order1:=xlDescending, Header:=xlYes

End Sub

我的整个代码都应该在不先打开文档的情况下运行(为此,我正在使用vbs文档)。

1 个答案:

答案 0 :(得分:0)

您缺少对工作表的引用,因此仅当它是活动工作表时才起作用。我删除了您的UsedRange行,因为它没有任何作用。

Sub create_the_table_investeringsforeninger()
' Best used when row length is static

Dim sht As Worksheet
Dim LastRow As Long
Dim Lrow As Long

Set sht = ThisWorkbook.Worksheets(2)

Lrow = sht.Range("D" & Rows.Count).End(xlUp).Row
sht.ListObjects.Add(SourceType:=xlSrcRange, Source:=sht.Range("A2:F2" & Lrow)).Name = "Investeringsforeninger"

'Sort Range "Investeringsforeninger"
sht.Range("investeringsforeninger").Sort Key1:=sht.Range("F2"), order1:=xlDescending, Header:=xlYes

End Sub