2017-10-28 1 views
-1

Ich habe einige Probleme mit diesem Code, um das Blatt zu setzen, kann ich mir vorstellen, weil ich nicht dim es habe, aber ich habe versucht, mit dim as workbook, die nicht funktioniert.Wie legen Sie den Blattnamen in VBA fest?

Ich habe versucht, Schritt für Schritt gehen und die "THF" haben die richtige Zeichenfolge drin.

Sub CreateSheet() 
    Set tsheet = ThisWorkbook.Sheets("For Save") 
    Dim th As String 
    Dim thf As String 
    Dim thfs As Workbook 
    th = Replace(tsheet.Range("A11").Value, "/", "-") 
    thf = "SAVE" & " " & th & " " & tsheet.Range("A3").Value 
    With ThisWorkbook 
     .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = thf 
     Set thfs = ThisWorkbook.Sheets(thf) 
       tsheet.Ranges("A1:R201").Copy 

    qsheet.Columns("A").PasteSpecial xlPasteValues 
    End With 
End Sub 
+1

zu ändern Welche Zeile des Codes erzeugt einen Fehler? Als gute Übung sollten Sie immer Ihre Variablen deklarieren. In diesem Fall würden Sie 'Dim tsheet as worksheet' verwenden. – Calico

+0

sorry über das ist die: ' Set thfs = ThisWorkbook.Sheets (thf) ' Es setzt nicht die" set "Blatt" thfs "aber die" thf "Haben Sie den richtigen Wert drin – Anker

+2

Sie haben' thfs' als Arbeitsmappe in der folgenden Anweisung 'Dim thfs As Workbook' deklariert, versuchen dann aber, sie als Arbeitsblatt' SET' zu setzen. Versuchen Sie, es in "Dim thfs as Worksheet" zu ändern – Calico

Antwort

0

Repostete als Antwort. Sie haben thfs als eine Arbeitsmappe in der folgenden Anweisung Dim thfs As Workbook deklariert, aber versuchen Sie dann zu SET es ein Arbeitsblatt sein. Versuchen Sie, es in Dim thfs As Worksheet

+0

Danke :) Ich werde es als Antwort machen, dann läuft die Zeit ab – Anker

0
  1. Verwenden Sie eine Worksheet Variable für thfs oder schließen sie in den With wie ich weiter unten kann
  2. hat ein Arbeitsblatt Name 31 Zeichen lang sein nur so am besten, dass

dies zu überprüfen Versuchen :

Sub CreateSheet() 
    Dim tsheet As Worksheet 
    Dim th As String, thf As String 

    Set tsheet = ThisWorkbook.Sheets("For Save") 
    th = Replace(tsheet.Range("A11").Value, "/", "-") 
    thf = "SAVE" & " " & th & " " & tsheet.Range("A3").Value 

    With ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)) 
     .Name = Left(thf, 31) 'remove if you're sure the length won't be over 31 characters 
     tsheet.Ranges("A1:R201").Copy 
     .Range("A1").PasteSpecial xlPasteValues 
    End With 
End Sub 
+0

danke für die Eingabe über die 31 Zeichen, aber ich bin noch nicht einmal dran. – Anker

Verwandte Themen