Über unsMediaKontaktImpressum
[Sponsored Post] 14. März 2017

Die VBA-Wissens-Datenbank – Der VBA-Tanker

Der VBA-Tanker – in Sekundenschnelle die gewünschte Prozedur finden. © donvictori0 / Fotolia.com
© donvictori0 / Fotolia.com

Irgendwann im Verlaufe einer Programmierung kommt man zu dem Punkt, an dem man sich erinnert, dass man die eine oder andere Aufgabenstellung in VBA bereits schon einmal gelöst hat. Nur wann und wo? Genau aus diesem Sachverhalt heraus entstand der VBA-Tanker. Beim VBA-Tanker handelt es sich um eine VBA-Makro-Datenbank. In dieser wertvollen, ständig erweiterten Makro-Code-Datenbank befinden sich derzeit 6.645 VBA-Lösungen zu Excel, Access, Word, PowerPoint, Outlook und übergreifenden VBA-Themen. Über ausgefeilte Suchfunktionen und eine professionelle Oberfläche kann man in sekundenschnelle die gewünschte Prozedur finden. Die Inhalte der Datenbank stammen in erster Linie direkt aus unseren Projekten, Büchern, Artikeln und Vorträgen. Es handelt sich also um in der Praxis erprobte Lösungen und Code-Schnipsel.

In der VBA-Datenbank selbst können neben den ausgelieferten Prozeduren auch eigene VBA-Beispiele hinterlegt werden. Der VBA-Tanker kommt ohne eine Installation aus und kann jederzeit bequem auf einem USB-Stick überallhin mitgenommen und eingesetzt werden. Bei Bedarf kann die Datenbank zu jeder Zeit mit der im Internet hinterlegten Datenbank synchronisieren werden. Im Internet verfügbar sind ebenso Beispieldateien zu ausgewählten Aufgabenstellungen.

Die VBA-Tanker-Software wird in der Regel zwei- bis dreimal in der Woche aktualisiert und mit neuen Beispielen ausgestattet. Eine Feedback-Funktion und kostenfreie E-Mail-Hotline runden das Software-Paket ab. Lernen Sie in diesem Artikel einige typische Beispiele aus dem VBA-Tanker kennen!

Abb.1: Die VBA-Wissensdatenbank VBA-Tanker. © Bernd Held
Abb.1: Die VBA-Wissensdatenbank VBA-Tanker. © Bernd Held

Unikate Werte ermitteln

Beim folgenden Beispiel werden eindeutige Werte aus einer Spalte ermittelt, in einem Dictionary-Objekt verwaltet und senkrecht ausgegeben. Diese Liste kann dann beispielsweise für ein Zellendropdown oder eine Kombinationsfeldliste verwendet werden.

Sub UnikateErmittelnUndAusgeben()
  Dim dc As Object, VarDat As Variant, i As Integer
 
With Tabelle1
  Set dc = CreateObject("Scripting.Dictionary")
  VarDat = .Range("A2:A" & .UsedRange.Rows.Count)
 For i = 1 To UBound(VarDat)
     If Not dc.Exists(VarDat(i, 1)) Then
        dc.Add VarDat(i, 1), i
     End If
  Next i
  Tabelle1.Range("H1:H" & dc.Count) = Application.WorksheetFunction.Transpose(dc.Keys())
  Set dc = Nothing
 End With
End Sub

Extremwerte in einer Liste kennzeichnen

Abb.2: Die drei höchsten Umsätze ermitteln und kennzeichnen. © Bernd Held
Abb.2: Die drei höchsten Umsätze ermitteln und kennzeichnen. © Bernd Held

Bei der folgenden Aufgabenstellung werden in einer Liste die drei größten Werte ermittelt und mit Hilfe der bedingten Formatierung von Excel aus gekennzeichnet.

 

 

 

 

 

Sub Die3GroesstenUmsaetzeKennzeichnen()
 Dim rngBereich As Range, lngZeileMax As Long
 
 With Tabelle1
   lngZeileMax = .Range("B" & .Rows.Count).End(xlUp).Row
 End With
 Set rngBereich = Tabelle1.Range("B2:B" & lngZeileMax)
   With rngBereich
        .FormatConditions.Delete
        .FormatConditions.Add Type:=xlExpression, Formula1:="=$B2>=KGRÖSSTE(" & rngBereich.Address & ";3)"
        .FormatConditions(1).Interior.Color = RGB(0, 255, 0)
    End With
End Sub

Ein Listenfeld mit Daten aus einer Tabelle füllen

Abb.3: Die Befüllung einer ListBox mit mehr als 10 Spalten. © Bernd Held
Abb.3: Die Befüllung einer ListBox mit mehr als 10 Spalten. © Bernd Held

Im folgenden Beispiel wird ein Listenfeld mit Daten aus einer Tabelle befüllt. Dieser Vorgang hört sich erst einmal nicht so kompliziert an. Aber: Standardmäßig stehen für die Befüllung eines Listenfelds nur 10 Spalten zur Verfügung. Was machen Sie, wenn Sie ein paar mehr Spalten haben? Beim nachfolgenden Makro werden mehr als 10 Spalten im Listenfeld angezeigt. Dabei wird die Spaltenbreite der ersten Spalte festgelegt und die restlichen Spaltenbreiten von Excel automatisch bestimmt. Des Weiteren wird die erste Zeile in der Tabelle als Überschrift für das Listenfeld definiert.

Private Sub cmd_OK_Click()
  Dim lngZeileMax As Long, Vardat As Variant
 
  lngZeileMax = Datentabelle.Cells(Datentabelle.Rows.Count, 1).End(xlUp).Row
  Vardat = Datentabelle.Range("A1:M" & lngZeileMax).Value
   With Me.ListBox1
  .ColumnHeads = True
  .ColumnWidths = "30" 'die erste Spalte auf 30 setzen, Rest Excel überlassen
  .ColumnCount = Datentabelle.Range("A1:M1").Columns.Count
  .RowSource = Datentabelle.Range("A2:M" & lngZeileMax).Address
  End With
End Sub

Hunderte von Verzeichnissen automatisch anlegen

Beim folgenden Beispiel werden in sekundenschnelle hunderte von Verzeichnissen angelegt. Dabei werden die Namen der Ordner direkt aus einer Excel-Tabelle in einer vorgegebenen Struktur bezogen. Die Anlage aller Verzeichnisse wollen Sie sicherlich nicht händisch vornehmen, oder?

Sub OrdnerAnlegen()
  Dim lngZeile As Long, lngZeileMax As Long, lngSpalteMax As Long
  Dim strVerzeichnis As String, strPfadNeu1 As String,  strPfadNeu2 As String
  Dim strPfadNeu3 As String
 
  With Tabelle1
    strPfad = ThisWorkbook.Path
    On Error Resume Next
    RmDir strPfad & "\" & .Range("A1").Value
    If Dir(strPfad & "\" & .Range("A1").Value, vbDirectory) = "" Then
      MkDir strPfad & "\" & .Range("A1").Value
    End If
   strPfad = strPfad & "\" & .Range("A1").Value
  lngZeileMax = .Range("C" & .Rows.Count).End(xlUp).Row
 
    For lngZeile = 2 To lngZeileMax
     lngSpalteMax = .Cells(lngZeile, .Columns.Count).End(xlToLeft).Column
     Select Case lngSpalteMax
      Case 2
        strVerzeichnis = strPfad & "\" & .Cells(lngZeile, 2).Value
        strPfadNeu1 = strPfad & "\" & .Cells(lngZeile, 2).Value
      Case 3
        strVerzeichnis = strPfadNeu1 & "\" & .Cells(lngZeile, 3).Value
        strPfadNeu2 = strPfadNeu1 & "\" & .Cells(lngZeile, 3).Value
      Case 4
        strVerzeichnis = strPfadNeu2 & "\" & .Cells(lngZeile, 4).Value
        strPfadNeu3 = strPfadNeu2 & "\" & .Cells(lngZeile, 4).Value
      Case 5
        strVerzeichnis = strPfadNeu3 & "\" & .Cells(lngZeile, 5).Value
     End Select
    If Dir(strVerzeichnis, vbDirectory) = "" Then
     MkDir strVerzeichnis
    End If
    Next lngZeile
  End With
End Sub
Abb.4: Die Vorlage für die Struktur der zu erstellenden Ordner. © Bernd Held
Abb.4: Die Vorlage für die Struktur der zu erstellenden Ordner. © Bernd Held

Den SVERWEIS verbessern

Abb.5: Preise aktualisieren auf Knopfdruck. © Bernd Held
Abb.5: Preise aktualisieren auf Knopfdruck. © Bernd Held

Über die Tabellenfunktion SVERWEIS können Sie Daten über einen eindeutigen Schlüssel in einer anderen Tabelle/Mappe finden und zuordnen. Leider kann diese Funktion nur Daten finden, die rechts vom Suchbegriff stehen. Auch kann diese Funktion keine noch nicht bekannten Werte finden. In der folgenden Lösung, die kaum eine halbe Seite ausmacht, wird ein Preisupdate über eine eindeutige Artikel-Nr. komplett über ein VBA-Makro vorgenommen. Die neuen Preise werden in Spalte C der Tabelle geschrieben. Neue Artikel werden in der Liste unten angehängt und farbig hervorgehoben.

Sub PreiseAktualisierenAndereTabelle()
  Dim lngZeile As Long, lngZeileMax As Long, lngZeileFrei As Long,  rngTreffer As Range
  Dim wksQuelle As Worksheet,  wksZiel As Worksheet
 
  Set wksQuelle = tbl_Preise
  Set wksZiel = tbl_Bestand
 With wksQuelle
   lngZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row
   For lngZeile = 2 To lngZeileMax
    Set rngTreffer = wksZiel.Range("A:A").Find _
     (what:=.Range("A" & lngZeile).Value, lookat:=xlWhole)
    If rngTreffer Is Nothing Then
     'Neue Nr
     lngZeileFrei = wksZiel.Range("A" & wksZiel.Rows.Count).End(xlUp).Row + 1
     wksZiel.Range("A" & lngZeileFrei).Value = .Range("A" & lngZeile).Value
     wksZiel.Range("C" & lngZeileFrei).Value = .Range("B" & lngZeile).Value
     wksZiel.Range("A" & lngZeileFrei).Interior.ColorIndex = 4
    Else
    'update
    rngTreffer.Offset(0, 2).Value = .Range("B" & lngZeile).Value
    End If
   Next lngZeile
   'sortieren
   wksZiel.Range("A:C").Sort Key1:=wksZiel.Range("A1"), order1:=xlAscending, Header:=xlYes
  End With
End Sub

Den AutoFilter per VBA bedienen

Bei der folgenden exemplarischen Aufgabenstellung werden beim Datenfilter mehrere Einträge eingestellt. So können aus einer Liste mehrere Länder in einem Vorgang gefiltert werden.

Sub MehrereFilterkriterienEinstellen()
  Dim lngZeileMax As Long, rngBereich As Range, intFilter As Integer
 
  With Tabelle1
  lngZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row
  Set rngBereich = .Range("A1:A" & lngZeileMax)
  intFilter = WorksheetFunction.Match("Stadt", rngBereich.Rows(1), 0)
  If .AutoFilterMode = False Then rngBereich.AutoFilter
   rngBereich.AutoFilter Field:=intFilter, Criteria1:=Array( _
      "Hamburg", "Berlin", "Stuttgart"), Operator:=xlFilterValues
   End With
End Sub
Abb.6: Mehrere Filtereinträge automatisch setzen. © Bernd Held
Abb.6: Mehrere Filtereinträge automatisch setzen. © Bernd Held

Umsätze pro Kostenstelle konsolidieren

Bei der folgenden Aufgabenstellung soll eine Excel-Liste erzeugt werden, bei der für jede Kostenstelle eine Summe aller Umsätze erzeugt wird. Gerade bei sehr großen Datenmengen gibt es kaum eine schnellere Variante, um Daten erfolgreich zu verdichten.

Sub ZugriffAufEigeneDateiSQLNachKstVerdichten()
  Dim Conn As New ADODB.Connection, rst As New ADODB.Recordset
  Dim strSQL As String, strPfad As String, strVerbindung As String

  With Tabelle3
    .Rows.Delete
    .Range("A1").Value = "Kst"
    .Range("B1").Value = "Umsatz"
    strPfad = ThisWorkbook.FullName
    strVerbindung = "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & strPfad & ";HDR=Yes';"
    Conn.Open strVerbindung
    strSQL = "SELECT Kst, Sum(Umsatz) AS Summe1 FROM [Tabelle2$] " & _
          "GROUP BY Kst"
    rst.Open strSQL, Conn
    .Range("A2").CopyFromRecordset rst
    rst.Close
    Conn.Close
  End With
End Sub
Abb.7: Eine blitzschnelle Verdichtung von Daten per VBA. © Bernd Held
Abb.7: Eine blitzschnelle Verdichtung von Daten per VBA. © Bernd Held

Tabellen benutzerdefiniert sortieren

Bei der folgenden Aufgabenstellung sollen bestimmte Tabellen in einer Arbeitsmappe nach einer bestimmten Vorgehensweise sortiert werden. Über ein Datenfeld wird diese Sortierung vorgegeben und anschließend umgesetzt.

Sub BenutzerdefiniertSortierungTabellen()
  Dim lngZ As Long, VarDat As Variant

  VarDat = Array("Übersicht", "Kosten", "Leistung", "Daten", "Export", "Diagramme")
  For lngZ = UBound(VarDat) To LBound(VarDat) Step -1
    Worksheets(VarDat(lngZ)).Move Before:=Worksheets(1)
  Next lngZ
End Sub
Abb.8: Die vorgegebene Sortierung der Tabellen anwenden. © Bernd Held
Abb.8: Die vorgegebene Sortierung der Tabellen anwenden. © Bernd Held

Namensschilder automatisch erstellen

Beim letzten Beispiel in diesem Artikel sollen auf Basis einer Teilnehmerliste in Excel entsprechende Namensschilder in PowerPoint erstellt werden. Auch diese Aufgabe sollte komplett automatisiert werden. Was Sie dazu brauchen, ist eine PowerPoint-Vorlage für das Namensschild und eine Excel-Tabelle, in der alle Namen verzeichnet sind.

Sub NamensschilderErstellen()
 Dim objPPT As Object, objPPTP As Object,  lngZeileMax As Long, strText As String
 
 Application.ScreenUpdating = False
 Application.DisplayAlerts = False
 With tbl_Ergebnis
  lngZeileMax = .Cells(.Rows.Count, 1).End(xlUp).Row
  For lngZeile = 2 To lngZeileMax
   Set objPPT = CreateObject("powerpoint.application")
   Set objPPTP = objPPT.presentations.Open(ThisWorkbook.Path & "\Namensschild.ppt")
   objPPTP.slides(1).Shapes(1).TextFrame.TextRange.Text = .Range("A" & lngZeile).Value
   objPPTP.slides(1).Shapes(2).TextFrame.TextRange.Text = .Range("A" & lngZeile).Value
   objPPTP.SaveAs ThisWorkbook.Path & "\Namensschild_" & .Range("A" & lngZeile).Value & ".ppt"
   objPPTP.Close
   Set objPPT = Nothing
  Next lngZeile
 End With
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Abb.9: Automatische Erstellung von Namensschilder über eine PowerPoint-Schablone (rechts). © Bernd Held
Abb.9: Automatische Erstellung von Namensschilder über eine PowerPoint-Schablone (rechts). © Bernd Held

Angebot für Leser der Informatik Aktuell

Abb.10: Gute Argumente für den VBA-Tanker. © Bernd Held
Abb.10: Gute Argumente für den VBA-Tanker. © Bernd Held

Der USB-Stick mit der Software kostet standardmäßig 250,00 Euro. Die Bestellung des VBA-Tankers im Held-Shop ist umsatzsteuerfrei. Als Leser der Informatik Aktuell erhalten Sie einen Rabatt von 30 Prozent und zahlen nur 175,00 Euro – umsatzsteuerfrei zu Bestellen über den Held-Shop. Die Laufzeit der Update-Funktion beträgt ein Jahr, eine Verlängerung ist für 50,00 Euro pro Jahr möglich. Eine Nutzung ist auch ohne Updates möglich. Weitere Informationen finden Sie bei Externer LinkHeld-Office.

Sie können die Bestellung entweder per E-Mail sendenMail oder das Externer LinkBestell-PDF tätigen.

nach Oben
Autor

Bernd Held

Bernd Held ist Dozent, VBA-Entwickler und -Programmierer aber auch Autor zahlreicher Fachbücher und Computer-Artikel.
>> Weiterlesen
Bücher des Autors:

YTo2OntzOjY6ImZldXNlciI7aTowO3M6MzoicGlkIjtpOjMxMzI7czozOiJjaWQiO3M6NToiMjAzMTkiO3M6NDoiY29uZiI7YTo4OntzOjEwOiJzdG9yYWdlUGlkIjtpOjgyMjtzOjEzOiJVc2VySW1hZ2VTaXplIjtpOjE4O3M6OToiYWR2YW5jZWQuIjthOjI6e3M6MTA6ImRhdGVGb3JtYXQiO3M6OToiZC1tLXkgSDppIjtzOjIxOiJzaG93Q291bnRDb21tZW50Vmlld3MiO2k6MDt9czo4OiJzaGFyaW5nLiI7YToxOntzOjEyOiJ1c2VTaGFyZUljb24iO047fXM6ODoicmF0aW5ncy4iO2E6Mjp7czoxNjoicmF0aW5nSW1hZ2VXaWR0aCI7aToxMTtzOjE2OiJyZXZpZXdJbWFnZVdpZHRoIjtpOjE2O31zOjY6InRoZW1lLiI7YToxMjp7czoyNjoiYm94bW9kZWxUZXh0YXJlYUxpbmVIZWlnaHQiO2k6MjA7czoyNDoiYm94bW9kZWxUZXh0YXJlYU5ickxpbmVzIjtpOjE7czoxNToiYm94bW9kZWxTcGFjaW5nIjtpOjQ7czoxODoiYm94bW9kZWxMaW5lSGVpZ2h0IjtpOjI1O3M6MTg6ImJveG1vZGVsTGFiZWxXaWR0aCI7aToxMzQ7czoyNjoiYm94bW9kZWxMYWJlbElucHV0UHJlc2VydmUiO2k6MDtzOjIyOiJib3htb2RlbElucHV0RmllbGRTaXplIjtpOjM1O3M6MTc6InNoYXJlYm9yZGVyQ29sb3IyIjtzOjY6ImNkZGVlYyI7czoxNzoic2hhcmVib3JkZXJDb2xvcjEiO3M6NjoiYWRhZWFmIjtzOjExOiJib3JkZXJDb2xvciI7czo2OiJkOGQ4ZDgiO3M6MjE6InNoYXJlQ291bnRib3JkZXJDb2xvciI7czo2OiJlM2UzZTMiO3M6MjA6InNoYXJlQmFja2dyb3VuZENvbG9yIjtzOjY6ImZmZmZmZiI7fXM6MTQ6ImRhdGVGb3JtYXRNb2RlIjtzOjQ6ImRhdGUiO3M6MTI6IlJlcXVpcmVkTWFyayI7czoxOiIqIjt9czo0OiJsYW5nIjtzOjI6ImRlIjtzOjM6InJlZiI7czoxNjoidHRfY29udGVudF8yMDMxOSI7fQ%3D%3DYTo0OntzOjQ6ImNvbmYiO2E6MzM6e3M6MTc6InVzZVdlYnBhZ2VQcmV2aWV3IjtzOjE6IjAiO3M6MjI6InVzZVdlYnBhZ2VWaWRlb1ByZXZpZXciO3M6MToiMCI7czoyMDoid2VicGFnZVByZXZpZXdIZWlnaHQiO3M6MjoiNzAiO3M6MjA6Im1heENoYXJzUHJldmlld1RpdGxlIjtzOjI6IjcwIjtzOjMxOiJ3ZWJwYWdlUHJldmlld0Rlc2NyaXB0aW9uTGVuZ3RoIjtzOjM6IjE2MCI7czozODoid2VicGFnZVByZXZpZXdEZXNjcmlwdGlvbk1pbmltYWxMZW5ndGgiO3M6MjoiNjAiO3M6Mjc6IndlYnBhZ2VQcmV2aWV3Q2FjaGVUaW1lUGFnZSI7czozOiIxODAiO3M6MzM6IndlYnBhZ2VQcmV2aWV3Q2FjaGVUaW1lVGVtcEltYWdlcyI7czoyOiI2MCI7czozMDoid2VicGFnZVByZXZpZXdDYWNoZUNsZWFyTWFudWFsIjtzOjE6IjAiO3M6Mjg6IndlYnBhZ2VQcmV2aWV3TnVtYmVyT2ZJbWFnZXMiO3M6MjoiMTAiO3M6Mzg6IndlYnBhZ2VQcmV2aWV3U2Nhbk1pbmltYWxJbWFnZUZpbGVTaXplIjtzOjQ6IjE1MDAiO3M6MzA6IndlYnBhZ2VQcmV2aWV3U2Nhbk1pbkltYWdlU2l6ZSI7czoyOiI0MCI7czozMDoid2VicGFnZVByZXZpZXdTY2FuTWF4SW1hZ2VTaXplIjtzOjM6IjQ1MCI7czoyOToid2VicGFnZVByZXZpZXdTY2FuTWluTG9nb1NpemUiO3M6MjoiMzAiO3M6MzE6IndlYnBhZ2VQcmV2aWV3U2Nhbk1heEltYWdlU2NhbnMiO3M6MjoiNDAiO3M6Mzg6IndlYnBhZ2VQcmV2aWV3U2Nhbk1heEltYWdlU2NhbnNGb3JMb2dvIjtzOjI6IjU1IjtzOjQwOiJ3ZWJwYWdlUHJldmlld1NjYW5NYXhIb3J6aXpvbnRhbFJlbGF0aW9uIjtzOjE6IjUiO3M6Mzc6IndlYnBhZ2VQcmV2aWV3U2Nhbm1heHZlcnRpY2FscmVsYXRpb24iO3M6MToiMyI7czozMDoid2VicGFnZVByZXZpZXdTY2FuTG9nb1BhdHRlcm5zIjtzOjEwOiJsb2dvLGNyZ2h0IjtzOjM4OiJ3ZWJwYWdlUHJldmlld1NjYW5FeGNsdWRlSW1hZ2VQYXR0ZXJucyI7czo1NzoicGl4ZWx0cmFucyxzcGFjZXIseW91dHViZSxyY2xvZ29zLHdoaXRlLHRyYW5zcGEsYmdfdGVhc2VyIjtzOjM4OiJ3ZWJwYWdlUHJldmlld0Rlc2NyaXB0aW9uUG9ydGlvbkxlbmd0aCI7czoyOiI0MCI7czoyNToid2VicGFnZVByZXZpZXdDdXJsVGltZW91dCI7czo0OiI3MDAwIjtzOjEyOiJ1c2VQaWNVcGxvYWQiO3M6MToiMCI7czoxMjoidXNlUGRmVXBsb2FkIjtzOjE6IjAiO3M6MTM6InBpY1VwbG9hZERpbXMiO3M6MzoiMTAwIjtzOjE2OiJwaWNVcGxvYWRNYXhEaW1YIjtzOjM6IjgwMCI7czoxNjoicGljVXBsb2FkTWF4RGltWSI7czozOiI5MDAiO3M6MjI6InBpY1VwbG9hZE1heERpbVdlYnBhZ2UiO3M6MzoiNDcwIjtzOjIzOiJwaWNVcGxvYWRNYXhEaW1ZV2VicGFnZSI7czozOiIzMDAiO3M6MjA6InBpY1VwbG9hZE1heGZpbGVzaXplIjtzOjQ6IjI1MDAiO3M6MjA6InBkZlVwbG9hZE1heGZpbGVzaXplIjtzOjQ6IjMwMDAiO3M6MjA6InVzZVRvcFdlYnBhZ2VQcmV2aWV3IjtzOjA6IiI7czoyNDoidG9wV2VicGFnZVByZXZpZXdQaWN0dXJlIjtpOjA7fXM6MTE6ImF3YWl0Z29vZ2xlIjtzOjI4OiJXYXJ0ZSBhdWYgQW50d29ydCB2b24gR29vZ2xlIjtzOjg6InR4dGltYWdlIjtzOjEzOiJCaWxkIGdlZnVuZGVuIjtzOjk6InR4dGltYWdlcyI7czoxNToiQmlsZGVyIGdlZnVuZGVuIjt9YTowOnt9YTowOnt9YTo3OntzOjE2OiJjb21tZW50TGlzdEluZGV4IjthOjE6e3M6MTk6ImNpZHR0X2NvbnRlbnRfMjAzMTkiO2E6MTp7czoxMDoic3RhcnRJbmRleCI7aTo1O319czoxNDoiY29tbWVudHNQYWdlSWQiO2k6MzEzMjtzOjE2OiJjb21tZW50TGlzdENvdW50IjtzOjU6IjIwMzE5IjtzOjEyOiJhY3RpdmVsYW5naWQiO2k6MDtzOjE3OiJjb21tZW50TGlzdFJlY29yZCI7czoxNjoidHRfY29udGVudF8yMDMxOSI7czoxMjoiZmluZGFuY2hvcm9rIjtzOjE6IjAiO3M6MTI6Im5ld2NvbW1lbnRpZCI7Tjt9 YTo1OntzOjExOiJleHRlcm5hbFVpZCI7aTozMTMyO3M6MTI6InNob3dVaWRQYXJhbSI7czowOiIiO3M6MTY6ImZvcmVpZ25UYWJsZU5hbWUiO3M6NToicGFnZXMiO3M6NToid2hlcmUiO3M6MTYzOiJhcHByb3ZlZD0xIEFORCBwaWQ9ODIyIEFORCB0eF90b2N0b2NfY29tbWVudHNfY29tbWVudHMuZGVsZXRlZD0wIEFORCB0eF90b2N0b2NfY29tbWVudHNfY29tbWVudHMuaGlkZGVuPTAgQU5EIChleHRlcm5hbF9yZWZfdWlkPSJ0dF9jb250ZW50XzIwMzE5IikgQU5EIHBhcmVudHVpZD0wIjtzOjEwOiJ3aGVyZV9kcGNrIjtzOjkwOiJwaWQ9ODIyIEFORCB0eF90b2N0b2NfY29tbWVudHNfY29tbWVudHMuZGVsZXRlZD0wIEFORCB0eF90b2N0b2NfY29tbWVudHNfY29tbWVudHMuaGlkZGVuPTAiO30%3D YToyOntpOjA7czoxNDk6IjxpbWcgc3JjPSIvdHlwbzNjb25mL2V4dC90b2N0b2NfY29tbWVudHMvcmVzL2Nzcy90aGVtZXMvdGlzcXVzL2ltZy9wcm9maWxlLnBuZyIgY2xhc3M9InR4LXRjLXVzZXJwaWMgdHgtdGMtdWltZ3NpemUiIHRpdGxlPSIiICBpZD0idHgtdGMtY3RzLWltZy0iIC8%2BIjtpOjk5OTk5O3M6MTUxOiI8aW1nIHNyYz0iL3R5cG8zY29uZi9leHQvdG9jdG9jX2NvbW1lbnRzL3Jlcy9jc3MvdGhlbWVzL3Rpc3F1cy9pbWcvcHJvZmlsZWYucG5nIiBjbGFzcz0idHgtdGMtdXNlcnBpY2YgdHgtdGMtdWltZ3NpemUiIHRpdGxlPSIiICBpZD0idHgtdGMtY3RzLWltZy0iIC8%2BIjt9
Bitte bestätigen Sie
Nein
Ja
Information
Ok

Noch keine Kommentare vorhanden

Ihr Kommentar ist eine Antwort auf den folgenden Kommentar
Vorschau wird geladen ...
*: Pflichtfeld