2016-07-05 5 views
0

Ich bearbeite eine vorhandene Vorlage in VBA. Diese Vorlage organisiert Daten von einem Blatt "Rohdaten" in ein Blatt "Tag", "Abend" und "Nacht". Ich möchte ein Blatt mit dem Namen "Weekend" erstellen, wo Daten von "Rohdaten" kopiert werden, wenn das Datum kein Wochentag ist (ich weiß, wie dieses Bit zu machen ist).VBA: Tickbox - True, erstellt ein Blatt. Falsch, löscht das Blatt

Allerdings ist die Menge an Daten, die durch diese Vorlage fließt, enorm. Um zu vermeiden, dass ein Wochenendblatt erstellt wird, wo der Benutzer keinen braucht/möchte, möchte ich einen Codeabschnitt einfügen, wenn ein Häkchen gesetzt ist (True), ein Blatt mit dem Namen "Weekend" wird erstellt (innerhalb der Arbeitsmappe, aber zwischen vorhandenen Blättern - nämlich zwischen einem Blatt mit dem Namen "Nacht" und "Grafik - Alle Daten") und wenn es nicht markiert ist (Falsch) nicht existieren.

Ich dachte daran, dieses Blatt die ganze Zeit zu haben, und es ausgeblendet zu haben, wenn das Häkchen nicht gesetzt ist, aber das bedeutet, dass die Daten noch hineingelegt würden und ich würde es im Interesse der Effizienz lieber nicht machen hab es so.

Hier ist der Code I

Sub ToggleWindDirection() 

Dim i As Long 

Application.ScreenUpdating = False 

If sheetArr(1) Is Nothing And LastNDRow = Empty Then 
    DefineLists 
End If 

Sheets("Raw Data").Unprotect Password:="2260" 
For Each sht In sheetArr 
    sht.Unprotect Password:="2260" 
Next 

Set chtAllData = ActiveWorkbook.Charts("Graph - All Data") 

    With Sheets("Raw Data") 

     If .Range("O15").Value = True Then 
     'Wind direction is being used 
      .Range("C17:G17").Font.ColorIndex = xlAutomatic 
      .Range("D17").Font.ColorIndex = 9 
      .Range("G17").Font.ColorIndex = 9 
      .Range("D17").Locked = False 
      .Range("G17").Locked = False 

      .Range("F" & FirstNDRow & ":F10000").Interior.Pattern = xlNone 
      .Range("F" & FirstNDRow & ":F10000").Interior.PatternTintAndShade = 0 
     .Range("F" & FirstNDRow & ":F10000").Font.ColorIndex = xlAutomatic 

    Else 
    'Not using wind direction 
     .Range("C17:G17").Font.ColorIndex = 16 
     .Range("D17").Locked = True 
     .Range("G17").Locked = True 

     .Range("F" & FirstNDRow & ":F10000").Interior.Pattern = xlSolid 
     .Range("F" & FirstNDRow & ":F10000").Interior.TintAndShade = -4.99893185216834E-02 
     .Range("F" & FirstNDRow & ":F10000").Font.ColorIndex = 16 

    End If 


'Addition by lewisthegruffalo 2016 

Dim ws As Worksheet 

    If .Range("O21").Value = True Then 
    'create the weekend sheet 
     Set ws = Worksheets.Add(After:=Worksheets("Night")) 
     ws.Name = "Weekend" 
    Else 
    'No Weekend needed 
     Worksheets("Weekend").Delete 
    End If 

End With 

Sheets("Raw Data").Activate 

Application.ScreenUpdating = True 

End Sub 

Jede Hilfe wäre sehr apprichiated zu ändern versuchen.

Mit freundlichen Grüßen,

lewisthegruffalo

Antwort

0

Wenn Sie ein neues Blatt mit Sheets.Add erstellen möchten, dann können Sie die Argumente in es verwenden, es zu sagen, wo es zu setzen, hat the msdn page ein gutes Beispiel bei der Boden.

0

Was hast du bisher? Wo willst du es nennen? Welches Kontrollkästchen muss aktiviert sein? Bitte geben Sie einen Code ein.

Eine allgemeine Antwort ist ein neues Arbeitsblatt hinzuzufügen:

Dim ws As Worksheet 
If Something Then 
Set ws = Worksheets.Add(Before:=Worksheets("Graph - All Data")) 
ws.Name = "Weekend" 
'do anything you want with the ws object 
End if 
+0

Hallo @Mono sorry für die Menge an Zeit, die ich diese verlassen habe, habe ich von dem Computer entfernt. – lewisthegruffalo

+0

Bis jetzt habe ich eine 'Homepage' (sozusagen), wo ich Variablen eingeben kann, die definieren, welche Art von Zeit angemessen ist, um "Nacht" oder "Tag" usw. zu betrachten, es gibt auch ein paar andere Kästchen, die fragen, ob Wetterdaten, die ebenfalls erhoben werden, sind zu berücksichtigen. Wenn diese nicht markiert sind (dh sie werden sofort ausgegraut und durch die '.Locked = True'-Methode" gesperrt ". Hoffe, das hilft – lewisthegruffalo

+0

Auch @Mono, ich habe versucht, dein' ws = Worksheet.add ('Abschnitt und es habe mich ein Fehler 1004 mit der Nachricht "Methode 'Hinzufügen' von Objekt 'Sheets' fehlgeschlagen, keine Beratung, Grüße – lewisthegruffalo

Verwandte Themen