我有一個帶有“分析”和“資料庫”選項卡的 Excel 電子表格。我想在 Analysis 中創建一個按鈕,單擊該按鈕會將資料庫選項卡轉換為表格。資料庫不是靜態的,不同的用戶總是在添加資料。
我有下面的代碼,但它在“.parent...”代碼行失敗。有人可以幫我解決這個問題嗎?
謝謝,
Sub Convert_Table()
With ThisWorkbook.Sheets("Database").Range("a1")
.Parent.ListObjects.Add(xlSrcRange, ThisWorkbook.Sheets("Database").Range(.End(xlDown), .End(xlToRight)), , xlYes).Name = "Table1"
End With
End Sub
uj5u.com熱心網友回復:
你能試一下嗎 :
Sub TryMe()
ActiveSheet.ListObjects.Add(xlSrcRange, Range(ThisWorkbook.Sheets("Database").Range("a1").End(xlDown), ThisWorkbook.Sheets("Database").Range("a1").End(xlToRight)), , xlYes).Name = "Table1"
End Sub
uj5u.com熱心網友回復:
ThisWorkbook.Sheets("Database").Range("a1").Parent是Sheets("Database"). 簡化您的代碼。
我會這樣做略有不同。
我會找到最后一行和最后一列來制作我的范圍,然后創建表格。xlDown而xlToRight不是是否有之間的空白單元格可靠。
難道這就是你想(未測驗)?我已經評論了代碼,但如果您仍然無法理解它,只需在下面發表評論即可。
Option Explicit
Sub Sample()
Dim ws As Worksheet
Dim lastRow As Long
Dim lastCol As Long
Dim rng As Range
Dim tbl As ListObject
'~~> This is your worksheet
Set ws = ThisWorkbook.Sheets("Database")
With ws
'~~> Unlist the previously created table
For Each tbl In .ListObjects
tbl.Unlist
Next tbl
If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
'~~> Find last row
lastRow = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
'~~> Find last column
lastCol = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Column
'~~> Set your rnage
Set rng = .Range(.Cells(1, 1), .Cells(lastRow, lastCol))
'~~> Create the table
.ListObjects.Add(xlSrcRange, rng, , xlYes).Name = "Table1"
End If
End With
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/353776.html
上一篇:多個單元格自動過濾
