【发布时间】:2016-01-05 15:56:20
【问题描述】:
【问题讨论】:
标签: excel excel-2013 dropdown
【问题讨论】:
标签: excel excel-2013 dropdown
这里有一些代码可以与 George 的使用表格的答案一起使用。
当过滤器正常工作时,我在添加表格时立即遇到了麻烦。您不能将“查询”范围转换为表格,但可以添加过滤器。见 --> https://stackoverflow.com/a/40492129/5079799 & 免责声明 这是我的博客,我将在其中发布更新的代码 https://www.freesoftwareservers.com/display/FREES/Filter+Worksheet+-+Table+-+Query+-+Excel+VBA
Public Sub DatatoTable(ws As Worksheet)
Dim TblStyle As String
TblStyle = "TableStyleMedium20"
Dim TblName As String
TblName = ws.Name
Dim TblRng As Range
Set TblRng = GetUsedRange(ws)
ws.Activate
TblRng.Select
Set lo = TblRng.ListObject
If Not lo Is Nothing Then
Debug.Print "Table Found"
Else
ws.ListObjects.Add(xlSrcRange, TblRng, , xlYes).Name = TblName
Range(TblName & "[#All]").Select
ws.ListObjects(TblName).TableStyle = TblStyle
End If
End Sub
Public Function GetUsedRange(ws As Worksheet) As Range
Dim lRow As Integer, lCol As Integer, fCol As Integer, fRow As Integer
fCol = Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlLeft).Column
lCol = Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
fRow = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlDown).Row
lRow = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Set GetUsedRange = ws.Range(Cells(fRow, fCol), Cells(lRow, lCol))
End Function
Sub Test()
Call DatatoTable(ActiveSheet)
End Sub
【讨论】:
或者更好的是,单击已填写的单元格,然后单击“主页”>>“格式为表格”。它为您提供了很多关于过滤、排序和公式复制的选项以及一些有趣的设计。
【讨论】:
filter 添加到ws 的子程序,这很好,然后我还想添加一个单击按钮进行排序,但似乎不可能,它只是作为过滤器构建的。但是,我更喜欢“表格”选项,现在可以探索更多新事物。