Comment ajouter une feuille nommée à la fin de toutes les feuilles excel
j'essaie d'ajouter une feuille Excel avec le nom "Temp" à la fin de toutes les feuilles existantes mais ce code ne fonctionne pas
Private Sub CreateSheet()
Dim ws As Worksheet
ws.Name = "Tempo"
Set ws = Sheets.Add(After:=Sheets(Sheets.Count))
End Sub
pouvez-vous s'il vous plaît me faire savoir pourquoi? merci
8 réponses
essaye ceci:
Private Sub CreateSheet()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets.Add(After:= _
ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
ws.Name = "Tempo"
End Sub
Ou un With
clause pour éviter d'appeler votre objet de façon répétée
Private Sub CreateSheet()
Dim ws As Worksheet
With ThisWorkbook
Set ws = .Sheets.Add(After:=.Sheets(.Sheets.Count))
ws.Name = "Tempo"
End With
End Sub
ci-Dessus peut être simplifiée si vous n'avez pas besoin d'appel sur la même feuille de calcul dans le reste du code.
Sub CreateSheet()
With ThisWorkbook
.Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "Temp"
End With
End Sub
Veuillez utiliser cette seule ligne:
Sheets.Add(After:=Sheets(Sheets.Count)).Name = "new_sheet_name"
essaye ceci:
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
ThisWorkbook.Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "XYZ"
(quand vous ajoutez une feuille de travail, de toute façon ce sera la feuille active)
Essayez d'utiliser:
Worksheets.Add (After:=Worksheets(Worksheets.Count)).Name = "MySheet"
Si vous voulez vérifier si une feuille avec le même nom existe déjà, vous pouvez créer une fonction:
Function funcCreateList(argCreateList)
For Each Worksheet In ThisWorkbook.Worksheets
If argCreateList = Worksheet.Name Then
Exit Function ' if found - exit function
End If
Next Worksheet
Worksheets.Add (After:=Worksheets(Worksheets.Count)).Name = argCreateList
End Function
Lorsque la fonction est créée, vous pouvez l'appeler à partir de votre principal secondaire, par exemple:
Sub main
funcCreateList "MySheet"
Exit Sub
Essayez de changer l'ordre de votre code. Vous devez d'abord créer la feuille de travail pour la nommer.
Private Sub CreateSheet()
Dim ws As Worksheet
Set ws = Sheets.Add(After:=Sheets(Sheets.Count))
ws.Name = "Tempo"
End Sub
merci,
Cela va vous donner la possibilité de:
- écrasez Ou conservez un onglet qui a le même nom.
- placez la feuille à la fin de tous les onglets ou à côté de l'onglet courant.
- Sélectionnez votre Nouvelle feuille ou Active.
Call CreateWorksheet("New", False, False, False)
Sub CreateWorksheet(sheetName, preserveOldSheet, isLastSheet, selectActiveSheet)
activeSheetNumber = Sheets(ActiveSheet.Name).Index
If (Evaluate("ISREF('" & sheetName & "'!A1)")) Then 'Does sheet exist?
If (preserveOldSheet) Then
MsgBox ("Can not create sheet " + sheetName + ". This sheet exist.")
Exit Sub
End If
Application.DisplayAlerts = False
Worksheets(sheetName).Delete
End If
If (isLastSheet) Then
Sheets.Add(After:=Sheets(Sheets.Count)).Name = sheetName 'Place sheet at the end.
Else 'Place sheet after the active sheet.
Sheets.Add(After:=Sheets(activeSheetNumber)).Name = sheetName
End If
If (selectActiveSheet) Then
Sheets(activeSheetNumber).Activate
End If
End Sub
c'est un ajout simple et rapide d'un onglet nommé à la feuille de travail courante:
Sheets.Add.Name = "Tempo"