PDA

Vollständige Version anzeigen : Excel VBA & Format kollidieren


Kollaps
04.07.2014, 08:42
Hallo liebe Gemeinde,

ich habe ein kleines Problem.

Ich möchte mit folgendem Worksheet_Change-Code erreichen, dass man als Datum z.B. 010614 und als Uhrzeit 800 eingeben kann und es korrekt ausgegeben wird.
Das Problem dabei ist, dass es auch wirklich als Datums-Format und als Uhrzeit-Format eingestellt sein muss, damit das spätere Programm, wo die Liste hochgeladen wird, das auch als solches erkennt.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim xval
Dim xvalue

If Target.Column = 3 Then
If Target.Row >= 7 _
And Target.Row <= 60 _
And Target.Value <> "" _
And 0 = InStr(1, Target.Value, ".") Then
xvalue = Trim(Target.Value)
If Len(xvalue) = 0 Then
Target.Value = ""
Else
If Len(xvalue) <= 2 Then
xvalue = xvalue & "00"
End If
While Len(xvalue) < 6
xvalue = "0" & xvalue
Wend
Target.Value = Left(xvalue, 2) & "." & Right(Left(xvalue, 4), 2) & ".20" & Right(xvalue, 2)
End If
End If
End If

If Target.Column = 6 Then
If Target.Row >= 7 _
And Target.Row <= 60 _
And Target.Value <> "" _
And 0 = InStr(1, Target.Value, ":") Then
xval = Trim(Target.Value)
If Len(xval) = 0 _
And Target.Value = "" Then
Target.Value = ""
Else
While Len(xval) < 4
xval = "0" & xval
Wend
Target.Value = Left(xval, 2) & ":" & Right(xval, 2)

End If
End If
End If

End Sub



raus kommt aber:

Datum *................Dauer (HH:MM) *
21.01.1929............0,:33
01.06.2014............09:30

(selbstverständlich in der richtigen Tabelle ohne die Punkte.)

Bei beiden habe ich das selbe reingeschrieben - unten ist es im Textformat (funktioniert!) oben im jeweiligen Format (Datum/ Uhrzeit).
Kann mir da jemand sagen, wie ich erstens die Fließzahl beim Datum richtig reinschreiben lasse und was genau bei der Zeitangabe passiert (vielleicht sogar inkl. Lösungsvorschlag)?

Vielen Dank schon einmal im Voraus.

Liebe Grüße
Ich...

hary
04.07.2014, 08:55
Moin
Ohne zu testen.
Bei einer Zellaenderung wird der Code ausgefuehrt und eine Zelle geaendert. Das wiederum loest das Change Ereigniss nochmal aus.
Versuch's mal mit Event aus- und wieder einschalten.
Application.EnableEvents = False
dein Code
Application.EnableEvents = True
gruss hary

Kollaps
04.07.2014, 09:04
Danke, das klappt für die Uhrzeit schon mal super, oder ich stell mich blöde an :D

Das Datum wird leider immer noch 25 Jahre im Voraus gesetzt.

Ich vermute, dass Excel erst das Format und dann den VBA Code aktiviert, was bedeutet, Excel sieht die Fließzahl, die ich eingebe und denkt sich sein Datum daraus.

Kann man das irgendwie kurz und knackig unterbinden?

Mc Santa
04.07.2014, 09:11
Hallo,

Leider versucht Excel wirklich zuerst ein Datumsformat zu finden und das Ereignis wird erst nach der Anpassung ausgelöst. Ich habe damals versucht eine Lösung zu finden, kam aber leider nicht weiter. Vielleicht hat jemand dazu eine gute Idee.
Zunächst also für dich nur die Mittelung, dass ich das Problem bestätigen kann..

VG

Kollaps
04.07.2014, 09:15
Das ist ja zumindest schon einmal tröstlich.

Kann man per VBA sagen, dass Excel das Datumsformat einstellen soll? Und zwar nachdem es von dem VBA-Code umgewandelt wurde?

MWOnline
04.07.2014, 09:22
Hallöchen,

Um aus dem Fließtext ein Datum zu machen wirst Du wohl mit String-Operationen dieses zusammensetzen müssen. Sprich mit MID und LEN z.B. und die Punkte dazwischen einfügen. Anschließend kannst Du das Datum mittels CDate in ein echtes Datum umwandeln. Einfach das Target manipulieren ;)

Wichtig: Beim Change Ereignis ein Flag einbauen, dass es keine Endlosschleife gibt, da durch die Target Manipulation das Change Ereignis erneut geworfen wird.

Beste Grüße und Viel Erfolg
Marc

Kollaps
04.07.2014, 09:30
genial. Dann kommt nenn englisches Datum raus, gibt's dafür ne besondere Eigenschaft, die ich einbauen muss, also, damit es deutsch wird?

___________

Zu früh gefreut...
Ich hab keine Ahnung, was ich dahin schreiben soll :D

Kannst du mir das vielleicht einmal zeigen?
___________
Update:

Zum hochladen MUSS das Format eingestellt sein, es sei denn, durch dieses CDATE wird das übernommen, aber da weiß ich nicht, wie man den Befehl schreibt, ich bin eigentlich Anfänger in VBA (sollte vielleicht auch mal gesagt werde) :D

EarlFred
04.07.2014, 09:43
Hallo Ich...

(nein, ich rede nicht mit mir, sondern mit Dir namens "Ich")

die Pünktchen einzuhämmern ist doch nicht der Hit! Stattdessen kaufst Du Dir ein paar Sekundenbruchteile Faulheit damit, dass Du Code in der Mappe hast, der Dir im Zweifel immer dazwischenfunkt. Ich würde mir das genau überlegen.

Chris hat hier eine Lösung gepostet:
http://www.ms-office-forum.de/forum/showpost.php?p=1285474&postcount=6

Grüße
EarlFred

Kollaps
04.07.2014, 10:03
Okay, den hab ich mir mal angeschaut.

Der spuckt aber auch nichts brauchbares aus :D

Set my_Range = Columns("C7:C60")

soll falsch sein, ist aber alles deklariert und bei ihm funktioniert das in der Beispiel -Tabelle mit Columns("A:B") aber das brauche ich ja gar nicht :D
Und der Debugger sagt nur "ist falsch" :D

Sollte Microsoft auch mal was dran machen xD
_______

Ich heiße übrigens auch Chris :D

EarlFred
04.07.2014, 10:13
Hallo Name?,

Sollte Microsoft auch mal was dran machen
wodran? An DEINEM Code? Dafür ist Bill sicher nicht verantwortlich zu machen und auch nicht zuständig.

Der spuckt aber auch nichts brauchbares aus
Apropos nix brauchbares: Mit Deiner Fehlerbeschreibung kann man ja herzlich wenig anfangen, Dir helfen also auch nicht. Leg ich mich eben wieder hin und entschuldige mich für die Störung.

Columns("C7:C60")
Spalte C7? Wo ist die denn?

Grüße
EarlFred

Kollaps
04.07.2014, 10:21
Nein, an der Fehlermeldung, nicht an meinem Code!

Ich weiß ja selbst, nicht was nicht stimmt, das ist ja das Problem.
Ich habe den Code von Chris-Kaiser genommen und die Bereiche angepasst, wie ich es brauche.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 Then
Dim my_Range As Range
Set my_Range = Columns("C7:C60") 'Bereich anpassen z.B Range("A1:F100")
If Not Intersect(Target, my_Range) Is Nothing Then
If Target.Value = "" Then Target.NumberFormat = "General"
End If
End If
End Sub

und in diesem Teil davon sagt er Set my_Range = Columns("C7:C60") 'Bereich anpassen z.B Range("A1:F100") darin passt was nicht.

Und in dem ersten Teil des Codes genauso.

Die Korrekte Meldung lautet Laufzeitfehler '1004':

Anwendungs- oder objektdefinierter Fehler
_____________

Ach gottchen, ja, Herr lass Hirn regnen :D
Ja, habe Columns in Range geändert.

Jetzt bekomme ich gar keine Fehlermeldung mehr, sondern direkt den Debugger auf den Schirm geworfen.
Selbe Zeile markiert wie vorher.

Ich glaube der hat auch keine Lust mehr darauf :D

chris-kaiser
04.07.2014, 10:25
Hi,

Der spuckt aber auch nichts brauchbares aus

Code:

Set my_Range = Columns("C7:C60")

das glaube ich gerne ;)

Spalten C7 bis C60
....

wie wäre es mit Bereich
Range("C7:C60")

aber ich würde immer am Tabellenblatt das Datum gleich richtig eingeben, oder einen Datepicker verwenden!
http://www.ms-office-forum.net/forum/showthread.php?t=208059

den Code den ich da habe funktioniert auch nur bedingt, für Risiken und Nebenwirkungen wird keine Haftung übernommen. ;)

Mc Santa
04.07.2014, 10:26
Hallo,

wenn du eine Range angibst, musst du es auch so nennen:
Set my_Range = Range("C7:C60")

Oder du gibst Spalten an, dann aber auch nur die:
Set my_Range = Columns("C:C")

Hilft dir das?
VG

@Chris: in dem verlinkten Code von dir habe ich ein paar Fehler auf die Schnelle gefunden, falls du interessiert bist, dann schreibe ich dir auf, wie man darauf stößt.
(falls du den Code eh so lassen willst, dann spare ich mir den Aufwand ;) )

EarlFred
04.07.2014, 10:26
@Chris,

aber ich würde immer am Tabellenblatt das Datum gleich richtig eingeben
da redest Du gegen eine Wand. Grad jüngst wieder mehrere Themen mit "wie spare ich mir die Eingabe von 2 Zeichen...?). Die Tastaturpreise scheinen zu steigen, die Dinger müssen also geschont werden. ;)

Grüße
EarlFred

Kollaps
04.07.2014, 10:32
Puuh. Okay.
Ich fange mal ganz am Anfang an.

Ich kann die Tabelle leider nicht online stellen, da ich das nur mit Echtdaten habe und mein Chef mich dann köpft. :D

Das ist ein Monatsbericht. Datum, Zeit, Projekt, Was haben die Leute gemacht.
Das beschreiben ist begrenzt auf den Bereich C7:L60

Da steckt schon jede Menge hinter (alles aber auf Excel-Basis) und jetzt wurde angemerkt, dass die Mitarbeiter nur 010614 (o.ä.) eingeben möchten, und dann das korrekte Datum rauskommt, soweit hatte ich es ja auch schon. Allerdings ist es dann für den Upload nach SAP Business ByDesign nicht korrekt formatiert.

Also muss ich etwas machen, damit der eingebene Text nicht als Fließzahl erkannt wird und hinterher trotzdem das korrekt formatierte Datum ergibt, weil Dropdown nicht so gern gesehen ist, wenn man 22 Tage auf einmal pflegen muss.

Den Code, den du bereitgestellt hast, Namensvetter, habe ich jetzt soweit abgewandelt, dass dort dann auch "Range" steht :D (Wie gesagt, Herr lass Hirn regnen)

Die Fehlermeldungen bleiben jetzt leider gänzlich aus und ich kriege nur noch den Debugger mit der markierten Zeile angezeigt.

Ich glaube das sollte ausführlich genug sein, oder? ^^

chris-kaiser
04.07.2014, 10:42
Hi,

ich tippe auf natürlich Feinde (verbundene Zellen!)

Übrigens wenn jemand am Tabellenblatt ein Datum so eingeben möchte ist meine Antwort immer, nein: nicht in Excel.

Entweder eine DB, Datepicker oder über UF gesteuert.
aber nie am Blatt. Das ist immer nur getrickst und die möglichen Fehlerquellen einfach zu hoch.

@EarlFred ^^
solche "Wünsche" kenne ich aus der Praxis nur zu gut....

Kollaps
04.07.2014, 14:13
Hallo Chris,

verbundene Zellen sind in dem angegebenen Bereich keine.

Und doch, das funktioniert an sich ja. Würden wir es nicht hochladen, wäre das ja, so wie ich es hatte, zufriedenstellend.

Was genau sind "Datepicker" und "UF" ?

MWOnline
04.07.2014, 14:19
Hallöchen,

Ich würde für solch ein Tool bzw. für die Eingabe von Zeiten und Projekten der Benutzer auch mit einer Eingabemaske (UserForm) arbeiten anstatt direkt in der Tabelle. So kann man sich auch die Formatierung der Datentabelle sparen ;) aber wie immer reine Geschmackssache. ;)

Wie Du eine Eingabemaske bauen kannst, findest Du mit der Suchfunktion oder alternativ hier (http://www.online-vba.de/vba_tutorialuserform.php) auf meinem Blog.

Beste Grüße und Viel Erfolg
Marc

Kollaps
04.07.2014, 14:30
d.h. mit einem UserForm kann ich auch Voreinstellungen treffen?

Die kriegen ein Pop-Up, geben ihren Kram ein und alle sind glücklich? Inklusive mir und SAP ? :D

Das wäre ja fast ZU perfekt!

Ich werde mich mal schlau lesen, danke schon einmal.

Falls ich fragen habe, kann ich euch dann auch direkt anschreiben?

MWOnline
04.07.2014, 14:33
Hi

ja genau, mit einer UserForm trennst Du Eingabe und Daten voneinander.
So kannst Du dem Benutzer grafisch alles anbieten und im Hintergrund alles im korrekten Format für SAP speichern. Daher das einfache Tutorial für Einsteiger. Wie gesagt es ist nur ein einfaches Beispiel es gibt noch viele viele Erweiterungsmöglichkeiten.

Ich wünsche Dir Viel Erfolg beim Ausprobieren ;)

Beste Grüße und ein erholsames Wochenende
Marc

Kollaps
08.07.2014, 08:24
So, auf ein neues. :D

Ich hasse es, etwas nicht zu können :D

Ich habe das jetzt so gebastelt (in einem Test) wie ich das gerne hätte, jetzt habe ich aber das Problem, dass er mir einen Laufzeitfehler 380 in der ListBox1 auswirft.

Ich weiß dazu gibt es schon Threads, aber das verstehe ich nicht so wirklich was da gesagt wird.

ListBox-Code:
Private Sub ListBox1_Click()
Dim lZeile As Long


TextBox2 = ""
TextBox3 = ""
ComboBox1 = ""
ComboBox2 = ""

If ListBox1.ListIndex >= 0 Then

lZeile = 7

Do While Trim(CStr(Tabelle1.Cells(lZeile, 3).Value)) <> ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 3).Value)) Then

DTPicker1 = Trim(CStr(Tabelle1.Cells(lZeile, 3).Value))
DTPicker1 = Tabelle1.Cells(lZeile, 6).Value
TextBox3 = Tabelle1.Cells(lZeile, 12).Value
ComboBox1 = Tabelle1.Cells(lZeile, 7).Value
ComboBox2 = Tabelle1.Cells(lZeile, 9).Value

Exit Do
End If

lZeile = lZeile + 1

Loop

End If

End Sub

und in der ist der Fehler:
DTPicker1 = Trim(CStr(Tabelle1.Cells(lZeile, 3).Value))

Laufzeitfehler '380':

Ungültiger Eigenschaftswert

chris-kaiser
08.07.2014, 08:54
Hi,

ich verstehe nicht was du mit dem Code bewirken willst.
Kannst du bitte eine Demo einstellen. Es reicht dabei das Blatt mit deinen Daten der Listbox und dem dtpicker. Alles andere kannst du ja löschen.

Objekte haben Eigenschaften und Methoden.... und ich empfehle immer diese zu verwenden, anstatt sich darauf zu verlassen das "Default" schon passen wird. Es ist nicht immer so :).


Textbox.Text
DTPicker1.? 'wahrscheinlich Value nur kann Value jetzt auch Text aufnehmen und interpretieren?

Kollaps
08.07.2014, 08:58
So, stimmt, die kann ich ja geben, da sind ja keine Daten drin...

Wenn ich das richtig verstanden habe ist es das übertragen von Tabelle nach Textbox.

chris-kaiser
08.07.2014, 09:08
Hi,

... kann dies nicht testen, da ich dein deinen DTPicker nicht auf dem Rechner habe.
Wenn es um ein Datum geht gibt es einen unabhängigen DTPicker von Uwe
http://www.ms-office-forum.net/forum/showthread.php?p=1483389

bzw. für Zeit habe ich auch ein paar Varianten erzeugt.
http://www.ms-office-forum.net/forum/showthread.php?t=287646

Kollaps
08.07.2014, 09:23
d.h. das ist kein Standardtool bei einer Office-Installation?

Das ist schlecht, also wieder alles ändern.
Dankeschön, ich probiere dann nochmal weiter. :D

MWOnline
08.07.2014, 09:25
Hallöchen,

der DatePicker den Du verwendest anscheinend nicht ;)
Ich habe mir dazu einen eigenen gebaut, den ich in meine Projekte einfach importiere und nutze. Somit hat man keine Dritt-Software und es funktioniert in jeder Office Version ohne Zusatz-Installation usw. Und es sieht auch noch besser aus :D

Einfach einen eigenen bauen auch wenn es einmal viel Zeit kostet bis er fertig ist. Anschließend kannst Du es ja immer wieder verwenden ;)

Beste Grüße und Viel Erfolg
Marc

Kollaps
08.07.2014, 10:11
Ihr seid mir Spaßvögel :D

Ich bin ein absoluter Anfänger was VBA angeht, bzw. Programmiert habe ich allerhöchstens mal mit Java in BlueJ :D

Ich versuch mir hier etwas zusammen zu basteln, wovon ich die hälfte vielleicht wirklich lesen kann. :D

Ich gebe mir mühe, ich probier das mal selbst zusammen zu friemeln und dann melde ich mich noch einmal...

Kollaps
08.07.2014, 13:53
Übertrag von Tabelle zu ListBox1:

Private Sub ListBox1_Click()
Dim lZeile As Long


TextBox3 = ""
ComboBox1 = ""
ComboBox2 = ""

If ListBox1.ListIndex >= 0 Then

lZeile = 7

Do While Trim(CStr(Tabelle1.Cells(lZeile, 3).Value)) <> ""
If ListBox1.Value = Trim(CStr(Tabelle1.Cells(lZeile, 3).Value)) Then


DTPicker1 = Trim(CStr(Tabelle1.Cells(lZeile, 3).Value))
DTPicker2 = Tabelle1.Cells(lZeile, 6).Value
TextBox3 = Tabelle1.Cells(lZeile, 12).Value
ComboBox1 = Tabelle1.Cells(lZeile, 7).Value
ComboBox2 = Tabelle1.Cells(lZeile, 9).Value

Exit Do
End If

lZeile = lZeile + 1

Loop

End If

End Sub

"Neuer Eintrag"-Button:
Private Sub Neuer_Eintrag_Click()
Dim lZeile As Long
lZeile = 7

Do While Trim(CStr(Tabelle1.Cells(lZeile, 3).Value)) <> ""
lZeile = lZeile + 1
Loop

Tabelle1.Cells(lZeile, 3) = CStr("Neuer Eintrag Zeile " & lZeile)
ListBox1.AddItem CStr("Neuer Eintrag Zeile " & lZeile)
ListBox1.ListIndex = ListBox1.ListCount - 1

End Sub

DA muss irgendwo die Verbindung sein.
Irgendetwas wird "falsch" übergeben, es passiert nämlich nur, dass der Laufzeit-Fehler angezeigt wird, wenn ich auf Neuer Eintrag klicke.

Und das mit dem DatePicker ist mir irgendwie zu kompliziert. (ich werde mich da zuhause bei Zeit mal dransetzen.)
Eigentlich wollte ich nicht einmal so weit rein gehen :D

Naja, egal. Es ist ja für einen guten Zweck. Seht ihr irgendetwas, was ich nicht sehe?

Achso, ich habe verschiedene Eigenschaften für den DTPicker1 ausprobiert, aber er spuckt trotzdem dieselbe Fehlermeldung aus...
______________________________________________________
15:23
Zwischenstand:

Ich hab's geschafft.
Er macht neue Einträge.

Übernimmt zwar die alten noch nicht, aber das wird auch, ich bin da zuversichtlich!

Nächste Hürde: Löschen-Knopf tut gar nichts. :D
Kommt aber auch noch! ^^

chris-kaiser
09.07.2014, 06:40
@ MC Santa

@Chris: in dem verlinkten Code von dir habe ich ein paar Fehler auf die Schnelle gefunden, falls du interessiert bist, dann schreibe ich dir auf, wie man darauf stößt.
(falls du den Code eh so lassen willst, dann spare ich mir den Aufwand )

Aber gerne doch!
Dann würde ich selber das Projekt auch wieder aufnehmen und testen, bzw. auch noch Verbesserungen suchen.
Mir sind die "Nebenwirkungen" des Codes bekannt, ich hatte auch schon andere Varianten verwendet, aber ich bin nie auf eine 100% Lösung gekommen.
:)

Kollaps
10.07.2014, 14:25
Value kann nicht auf NULL gesetzt werden, wenn Checkbox-Eigenschaft = FALSE

Was meint er mit "Kann nicht auf NULL gesetzt werden"? Ich setze den DTPicker nirgens auf 0 oder "" und ich "cleare" den auch nirgens.
Nur die ListBox1. Ich versteh das nicht.

(Nachstehend mal der gesamte Code, den ich habe, ich weiß, dass der noch nicht 100%ig sauber ist, ich bin aber dran. )

Kann mir das einer erklären?

Option Explicit
Option Compare Text


Private Sub DTPicker1_Change()
Neuer_Eintrag.Enabled = True
ComboBox1.Enabled = True
ComboBox2.Enabled = True
End Sub

Private Sub Loeschen_Click()
Dim lZeile As Long

'Wenn kein Datensatz in der ListBox markiert wurde, wird die Routine beendet
If ListBox1.ListIndex = -1 Then Exit Sub

'Zum Löschen benötigen wir die Zeilennummer des ausgewählten Datensatzes
lZeile = 7 'Start in Zeile 2, Zeile 1 sind ja die Überschriften
'Schleife solange etwas in der ersten Spalte in Tabelle 1 drin steht
Do While Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) <> ""

'Datensatz ID Spalte mit selektiertem Eintrag der ListBox vergleichen
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 3).Value)) Then

'Eintrag gefunden, die ganze Zeile wird nun gelöscht
Tabelle1.Rows(CStr(lZeile & ":" & lZeile)).Value = ""
Tabelle2.Cells(lZeile, 1).Value = ""

'Die ListBox muss nun neu geladen werden!
Call UserForm_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0

Exit Do 'Vorzeitiges Ende, da der Datensatz schon gefunden ist

End If

lZeile = lZeile + 1 'Nächste Zeile bearbeiten
Loop

End Sub
Private Sub Neuer_Eintrag_Click()
Dim lZeile As Long
lZeile = 7

Do While Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) <> ""
lZeile = lZeile + 1
Loop

Tabelle2.Cells(lZeile, 1) = lZeile
Tabelle1.Cells(lZeile, 3) = CStr(DTPicker1.Value)
ListBox1.AddItem CStr(DTPicker1.Value)
ListBox1.ListIndex = ListBox1.ListCount - 1
TextBox3.Enabled = True

ComboBox1.Enabled = True
ComboBox2.Enabled = True


End Sub

Private Sub Speichern_Click()
Dim lZeile As Long
If ListBox1.ListIndex = -1 Then Exit Sub
If Trim(CStr(DTPicker1.Value)) = "" Then
MsgBox "Sie müssen mindestens ein Datum eingeben!", vbCritical + vbOKOnly, "FEHLER!"
Exit Sub
End If

lZeile = 7

Do While Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) <> ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 3).Value)) Then

Tabelle2.Cells(lZeile, 1).Value = CStr(lZeile)
Tabelle1.Cells(lZeile, 3).Value = DTPicker1.Value
Tabelle1.Cells(lZeile, 6).Value = DTPicker2.Value
Tabelle1.Cells(lZeile, 12).Value = TextBox3.Text
Tabelle1.Cells(lZeile, 7).Value = ComboBox1.Text
Tabelle1.Cells(lZeile, 9).Value = ComboBox2.Text
TextBox3.Enabled = False

If ListBox1.Text <> CStr(DTPicker1.Value) Then
Call UserForm_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
End If

Exit Do

End If

lZeile = lZeile + 1

Loop

End Sub
Private Sub Beenden_Click()
Unload Me

End Sub

Private Sub ListBox1_Click()
Dim lZeile As Long


TextBox3 = ""
ComboBox1 = ""
ComboBox2 = ""

If ListBox1.ListIndex >= 0 Then

lZeile = 7

Do While Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) <> ""
If ListBox1.Value = Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) Then


DTPicker1 = Tabelle1.Cells(lZeile, 3).Value
DTPicker2 = Tabelle1.Cells(lZeile, 6).Value
TextBox3 = Tabelle1.Cells(lZeile, 12).Value
ComboBox1 = Tabelle1.Cells(lZeile, 7).Value
ComboBox2 = Tabelle1.Cells(lZeile, 9).Value

Exit Do
End If

lZeile = lZeile + 1

Loop

End If

End Sub


Private Sub UserForm_Activate()
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
TextBox3.Enabled = False
ComboBox1.Enabled = False
ComboBox2.Enabled = False

End Sub
Private Sub UserForm_Initialize()
Dim lZeile As Long

TextBox3 = ""
ComboBox1 = ""
ComboBox2 = ""

ListBox1.Clear

TextBox3.Enabled = False
ComboBox1.Enabled = False
ComboBox2.Enabled = False

lZeile = 7
Do While Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) <> ""

ListBox1.AddItem Trim(CStr(Tabelle2.Cells(lZeile, 1).Value))

lZeile = lZeile + 1

Loop




End Sub