Wie kann ich per Makro festlegen, das Daten nur exportiert werden, wenn sie festgelegte Voraussetzungen erfüllen?

Hallo zusammen,

ich habe exemplarisch mein Beispiel in zwei Bildern dargestellt. Bild 1 zeigt eine Checkliste für 2 Stationen. Für Produkt 1 und Produkt 2 können verschiedene Bearbeitungsvorgänge vom Kunden ausgewählt werden. Anschließend kann per Befehlsschaltfläche ein separates Tabellensheet mit den ausgewählten Bearbeitungsvorgängen erstellt werden, wie in Bild 2 zu sehen ist.

Nachfolgend ist der gesamte Code der Checkliste und aktuellen Exportfunktion gelistet (vielen Dank beim User Suboptimierer für seine Unterstützung bei der Erstellung).

Private Sub btnExportSelected_Click()
  Dim i As Integer
  Dim wb As Workbook
  Dim ws As Worksheet
   
  Set wb = Excel.Workbooks.Add()
  Set ws = wb.Worksheets(1)
   
  ws.Range("A1").Value = Range("A4").Value
  ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Range("C3").Value
  For i = 4 To 13
    If Range("E" & i).Value = "X" Then _
      ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Range("C" & i).Value
  Next
   
  ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Range("G3").Value
  For i = 4 To 13
    If Range("I" & i).Value = "X" Then _
      ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Range("G" & i).Value
  Next
   
  ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Range("A15").Value
  ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Range("C3").Value
  For i = 16 To 25
    If Range("E" & i).Value = "X" Then _
      ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Range("C" & i).Value
  Next
   
  ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Range("G3").Value
  For i = 16 To 25
    If Range("I" & i).Value = "X" Then _
      ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Range("G" & i).Value
  Next
   
  'Call wb.SaveAs("MarkiertePositionenExport.xlsx")
End Sub

Mit diesem Code werden immer die Überschriften der verschiedenen Produkte im zweiten Tabellensheet ausgegeben. Kann ich eine Bedingung festlegen, damit diese Überschriften nur ausgegeben werden, wenn auch tatsächlich ein Checkfeld des jeweiligen Produktes markiert worden ist? Etwas wie "wenn kein Checkfeld bei Produkt 1 markiert ist, dann überspringe Überschrift Produkt 1"?

Meine zweite und letzte Frage hat mit der Formatierung zu tun. Ich kann ja über die folgende Zeile meine Schrift fett darstellen:

Worksheets("Tabelle1").Range("A1:A5").Font.Bold = True

Kann ich diese Formatierung dynamisch gestalten, damit immer nur die Überschriften fett dargestellt werden (wie in Bild 2)? Je nachdem was ich in der Checkliste auswähle, verschiebt sich ja mein Auswahlbereich im zweiten Tabellensheet.

Wie kann ich per Makro festlegen, das Daten nur exportiert werden, wenn sie festgelegte Voraussetzungen erfüllen?
Computer, Excel, makro, VBA, VBA Programmierung, Spiele und Gaming
2 Antworten
Wie kann ich per Makro eine Checklistauswahl in eine separate Excel-Datei exportieren?

Hallo zusammen,

ich habe eine Checkliste erstellt, die ich um eine Funktion erweitern möchte. Produkt 1 und Produkt 2 werden auf Station 1 und auf Station 2 bearbeitet. Abhängig vom Kundenwunsch, werden die gewünschten Bearbeitungsvorgänge in der Checkliste ausgewählt. Der Code für die Checkfelder lautet:

Const VK_LEFT = &H25
Const VK_UP = &H26
Const VK_RIGHT = &H27
Const VK_DOWN = &H28
Const VK_RETURN = &HD
Const VK_TAB = &H9

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("E4:E13,E15:E27,I4:I13,I15:I27")) Is Nothing _
      And Target.Count = 1 Then
        If GetKeyState(VK_UP) >= 0 And GetKeyState(VK_DOWN) >= 0 _
           And GetKeyState(VK_LEFT) >= 0 And GetKeyState(VK_RIGHT) >= 0 _
           And GetKeyState(VK_TAB) >= 0 And GetKeyState(VK_RETURN) >= 0 Then
            If Not GetAsyncKeyState(vbKeyRButton) And &H8000 Then
                If Target.Value = "X" Then
                Target.Value = ""
                Else: Target.Value = "X"
                End If
            End If
        End If
    End If
End Sub

Gibt es jetzt die Möglichkeit, einen Start-Button zu integrieren, der nach dem Betätigen ein separates Excel-File öffnet und anschließend nur die mit „X“ markierten Felder übernimmt? Das Ganze habe ich exemplarisch in den angehängten Bildern dargestellt. Bild 1 wäre dann Tabelle 1 mit den Checkfeldern (A3-I27), Bild 2 ist dann die Export-Datei in Tabelle 2 (A1-A22). Ich muss sagen das ich ein absoluter Grünschnabel auf dem Gebiet der Makros bin, daher wäre ich für jede Hilfe sehr dankbar!

Wie kann ich per Makro eine Checklistauswahl in eine separate Excel-Datei exportieren?
Computer, Excel, Technik, makro, VBA, Programmierung, Technologie
1 Antwort