Soru Tüm excel sayfalarının sonunda Adlandırılmış Sayfa Ekleme


Mevcut tüm sayfaların sonunda Ad "Temp" yazan bir Excel sayfası eklemeye çalışıyorum ancak bu kod çalışmıyor

Private Sub CreateSheet()
Dim ws As Worksheet
ws.Name = "Tempo"
Set ws = Sheets.Add(After:=Sheets(Sheets.Count))
End Sub

Bana nedenini bildirir misin? Teşekkürler


44
2017-12-20 06:33


Menşei


Çünkü sen yaratmadın ws atamadan önce .Name. Kafanız karışmasın: Özelliklerine erişmeye çalışmadan önce değişkeninizi ilk olarak oluşturun. - Manhattan
@ L42: Silme işlemini geri al, yine de doğru cevap bu. - Manhattan
Temp veya Tempo ? - pnuts


Cevaplar:


Bunu dene:

Private Sub CreateSheet()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets.Add(After:= _
             ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
    ws.Name = "Tempo"
End Sub

Ya da With nesneyi tekrar tekrar çağırmamak için yan tümce

Private Sub CreateSheet()
    Dim ws As Worksheet
    With ThisWorkbook
        Set ws = .Sheets.Add(After:=.Sheets(.Sheets.Count))
        ws.Name = "Tempo"
    End With
End Sub

Kodun geri kalanında aynı çalışma sayfasında arama yapmanız gerekmiyorsa, daha da basitleştirilebilir.

Sub CreateSheet()
    With ThisWorkbook
        .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "Temp"
    End With
End Sub

95
2017-12-20 06:39



Teşekkürler, ama sanırım ThisWorkbook. Doğru değil - Behseini
neden neyin var? sayfayı aynı çalışma kitabında oluşturmuyorsunuz? - L42
@Behseini Ne demek yanlış değil? - sam092
@Behseini: Sayfayı oluştururken bu doğru bir diğeri Sorunuzda belirtmediğiniz çalışma kitabı. - Manhattan
ThisWorkbook çalışan makroyu barındıran çalışma kitabıdır. ActiveWorkbook kullanıcının çalıştığı çalışma kitabıdır (sade ifadelerle söylenir). WorkBooks ("somename") belirli bir açık çalışma kitabını ele alıyor - Massimo Fuccillo


Lütfen bu bir astar kullanın:

Sheets.Add(After:=Sheets(Sheets.Count)).Name = "new_sheet_name"

25
2018-01-03 05:27





Bunu dene:

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

5
2017-10-07 12:44





ThisWorkbook.Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "XYZ"

(Bir çalışma sayfası eklediğinizde, yine de etkin sayfa olacaktır)


5
2017-09-14 07:56





Kullanmaya çalışmak:

Worksheets.Add (After:=Worksheets(Worksheets.Count)).Name = "MySheet"

Aynı ada sahip bir sayfanın olup olmadığını kontrol etmek isterseniz, bir işlev oluşturabilirsiniz:

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

İşlev oluşturulduğunda, ana Sub.'den çağrı yapabilirsiniz, ör .:

Sub main

    funcCreateList "MySheet"

Exit Sub

2
2018-03-23 10:14






Kodunuzun sırasını değiştirmeyi deneyin. Adını vermek için önce çalışma sayfasını oluşturmanız gerekir.

Private Sub CreateSheet()
    Dim ws As Worksheet
    Set ws = Sheets.Add(After:=Sheets(Sheets.Count))
    ws.Name = "Tempo"
End Sub

Teşekkürler,


1
2017-11-15 19:04





Bu size seçenek sunar:

  1. Aynı ada sahip bir sekmenin üzerine yaz veya koru.
  2. Sayfayı tüm sekmelerin sonunda veya geçerli sekmenin yanında yerleştirin.
  3. Yeni sayfanızı veya Etkin olanı seçin.

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

1
2017-10-17 22:19





Bu, geçerli çalışma sayfasına adlandırılmış bir sekmenin hızlı ve basit bir ekidir:

Sheets.Add.Name = "Tempo"

-3
2017-10-22 19:04