Beh*_*ini 64 excel vba worksheet
我试图在所有现有工作表的末尾添加一个名为"Temp"的Excel工作表,但此代码不起作用:
Private Sub CreateSheet()
Dim ws As Worksheet
ws.Name = "Tempo"
Set ws = Sheets.Add(After:=Sheets(Sheets.Count))
End Sub
Run Code Online (Sandbox Code Playgroud)
你能告诉我为什么吗?
L42*_*L42 140
试试这个:
Private Sub CreateSheet()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets.Add(After:= _
ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
ws.Name = "Tempo"
End Sub
Run Code Online (Sandbox Code Playgroud)
或者使用一个With子句来避免反复调出你的对象
Private Sub CreateSheet()
Dim ws As Worksheet
With ThisWorkbook
Set ws = .Sheets.Add(After:=.Sheets(.Sheets.Count))
ws.Name = "Tempo"
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
如果您不需要在其余代码中调出相同的工作表,则可以进一步简化上述内容.
Sub CreateSheet()
With ThisWorkbook
.Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "Temp"
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
Ama*_*mar 32
请使用这一个班轮:
Sheets.Add(After:=Sheets(Sheets.Count)).Name = "new_sheet_name"
Run Code Online (Sandbox Code Playgroud)
ThisWorkbook.Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "XYZ"
Run Code Online (Sandbox Code Playgroud)
(当你添加一个工作表时,无论如何它都是活动表)
小智 5
试试这个:
Public Enum iSide
iBefore
iAfter
End Enum
Private Function addSheet(ByRef inWB As Workbook, ByVal inBeforeOrAfter As iSide, ByRef inNamePrefix As String, ByVal inName As String) As Worksheet
On Error GoTo the_dark
Dim wsSheet As Worksheet
Dim bFoundWS As Boolean
bFoundWS = False
If inNamePrefix <> "" Then
Set wsSheet = findWS(inWB, inNamePrefix, bFoundWS)
End If
If inBeforeOrAfter = iAfter Then
If wsSheet Is Nothing Or bFoundWS = False Then
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = inName
Else
Worksheets.Add(After:=wsSheet).Name = inName
End If
Else
If wsSheet Is Nothing Or bFoundWS = False Then
Worksheets.Add(Before:=Worksheets(1)).Name = inName
Else
Worksheets.Add(Before:=wsSheet).Name = inName
End If
End If
Set addSheet = findWS(inWB, inName, bFoundWS) ' just to confirm it exists and gets it handle
the_light:
Exit Function
the_dark:
MsgBox "addSheet: " & inName & ": " & Err.Description, vbOKOnly, "unexpected error"
Err.Clear
GoTo the_light
End Function
Run Code Online (Sandbox Code Playgroud)
尝试切换代码的顺序。您必须首先创建工作表才能为其命名。
Private Sub CreateSheet()
Dim ws As Worksheet
Set ws = Sheets.Add(After:=Sheets(Sheets.Count))
ws.Name = "Tempo"
End Sub
Run Code Online (Sandbox Code Playgroud)
谢谢,
| 归档时间: |
|
| 查看次数: |
609467 次 |
| 最近记录: |