Daten Übertragung mit Dialogfenster und Abfrage
#21
Hallöchen,

beim userform_initialize hast Du iCnt = 38
Dort müsste auch 18 rein wie im Cobobox-Code, sonst geht es erst in Zeile 38 los ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#22
ich verstehe es nicht meine Post wird immer wieder gelöscht

jetzt habe ich gerade gesehen das nur die Daten aus der ListBox übertragen werden
Kannst du mir Code geben für das:

Die Quell Tabelle besteht aus 65 Zellen also von A bis BM. Meine Ziel Tabelle hat 57 Zellen A bis BE.
Ich möchte wie folgt übertragen:

Q14 --> Zi7
Q21 --> Z18
Q22 --> Z11
Q24 --> Z35
Q25 --> Z13
Q29 --> Z36
Q30 --> Z37
Q32 --> Z38
Q38 --> Z30
Q39 --> Z31
Q42 --> Z29
Q62 --> Z8 (Wenn aber in Q62 im wert nach 7 Zeichen folgendes Kommt "PF80..." kommt dann soll der wert aus Q63 genommen werden)
Q63 --> Z8 siehe Q62
Q64 --> Z19

weiter hin soll in die Z2 eine "9" rein geschrieben werden und in die Z47 das datum an dem die Übertragung erfolgte

vielen Dank
Top
#23
Hallo schauen,

hoffentlich hattest du schönes Wochenende. Können wir den Topic kommende Woche schlissen.

Vielen Dank
Top
#24
Hallöchen,

warum willst Du denn jetzt Daten aus verschiedenen Zeilen der Spalte Q in verschiedenen Zeilen der Spalte Z übertragen? Was hat das dann noch mit den gefundenen Daten zu tun? Oder ist Q die Quelle und die Nummer die Spaltennummer, analog Z?


Zitat:Wenn aber in Q62 im wert nach 7 Zeichen folgendes Kommt "PF80..." kommt dann soll der wert aus Q63 genommen werden

Das könnte man mit INSTR prüfen, im Prinzip
IF INSTR(1,...Range("Q62").Value,"PF80")=7 then ...Range("Z8").Value = ...Range("Q63").Value Else ...Range("Z8").Value = ...Range("Q62").Value

Zitat: in die Z47 das datum an dem die Übertragung erfolgte[quote]
...Range("Z47")=Date

[quote]jetzt habe ich gerade gesehen das nur die Daten aus der ListBox übertragen werden
ja. Ansonsten müsste ich nach der Auswahl nochmal suchen, wo die Daten stehen.

Im Prinzip statt der Übernahme aus der Listbox dann so eine Schleife einbauen
Code:

iCnt1 = 18
Do While Cells(iCnt1, 38) <> ""
If Cells(iCnt1, 38).Value = Val(Me.ComboBox1.Value) And Cells(iCnt1, xx).Value = val(ListBox1.List(iCnt1, 3)) Then
  'Daten uebernehmen
  'Mit dem Zielblatt
  With Workbooks("Ziel.xlsx").Sheets("Tabelle1")
    'mit der ersten leeren Zelle (anhand Spalte 6)
    With .Cells(.Cells(.Rows.Count, 6).End(xlUp).Row + 1, 6)
  '...
  '...
  '...
  '...
  iCnt1=iCnt1+1)
Loop
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#25
Hallo Andre,


Zitat:warum willst Du denn jetzt Daten aus verschiedenen Zeilen der Spalte Q in verschiedenen Zeilen der Spalte Z übertragen?  Was hat das dann noch mit den gefundenen Daten zu tun? Oder ist Q die Quelle und die Nummer die Spaltennummer, analog Z?



Ja Q bedeutet Quelle (Tabelle) und die Nummer ist die Zellennummer in welchen meine Werte stehen und Z ist Ziel (Tabelle) mit den Zellennummer wo die werte reinkommen sollen.
Ich möchte also alle diese 13 Werte (weil bei Q62 und Q63 ja eine aus beiden gewählt werden soll) in der List Box sehen und dann beim Übertragen sollen noch zwei ergändende Daten mit "9" und den Datum kommen

Fangen wir mal beim anzeigen der Daten an, sonnst komme ich überhaupt nicht nehr zu recht:)

Also hier ist der Code für die ComboBox1, 


Code:
Private Sub ComboBox1_Change()
ListBox1.Clear
'Variablendeklarationen - Integer (%)
Dim iCnt1%, iCnt2%
'Schleifenzaehler auf 18 setzen (Anfangszeile in Quelle)
iCnt1 = 18
'Schleife solange bis in Spalte 38 eine Zelle ohne Inhalt kommt
Do While Cells(iCnt1, 38) <> ""
  'Wenn der Zellinhalt der Auswahl entspricht, dann
  If Cells(iCnt1, 38).Value = Val(Me.ComboBox1.Value) Then
    'Mit der Listbox ... (fuellen)
    With Me.ListBox1
      'Eintrag aus Spalte 1 hinzufuegen
      .AddItem Cells(iCnt1, 38).Value
      'Schleife ueber weitere Zellen der Zeile
      For iCnt2 = 1 To 13
        'weitere EIntraege der Zeile hinzufuegen
        .List(.ListCount - 1, iCnt2) = Cells(iCnt1, iCnt2 + 1).Value --> Fehler kommt hier
      'Ende Schleife ueber weitere Zellen der Zeile
      Next
    'Ende Mit der Listbox ... (fuellen)
    End With
  'Ende Wenn der Zellinhalt der Auswahl entspricht, dann
  End If
  'Schleifenzaehler iCnt1 hochsetzen
  iCnt1 = iCnt1 + 1
'Ende Schleife solange bis in Spalte 4 eine Zelle ohne Inhalt kommt
Loop
End Sub

und hier der für UserForm_Initialize

Code:
Private Sub UserForm_Initialize()
'Variablendeklarationen - Integer (%)
Dim iCnt%
'Zaehler auf 4 setzen
iCnt = 38
'Schleife solange bis in Spalte 4 eine Zelle ohne Inhalt kommt
Do While Cells(iCnt, 38) <> ""
  'Wenn der Zellinhalt unterschiedlich zum vorherigen Eintrag ist, dann in Combo uebernehmen
  If Cells(iCnt, 38).Value <> Cells(iCnt - 1, 38).Value Then Me.ComboBox1.AddItem Cells(iCnt, 38).Value
  'Schleifenzehler hochsetzen
  iCnt = iCnt + 1
'Ende Schleife solange bis in Spalte 4 eine Zelle ohne Inhalt kommt
Loop
End Sub

bei dieser Variante bekomme ich folgenden Fehler: "Eigenschaften List konnte nicht gesetzt werden. Ungültiger Eigenschaftenwert"

Was muss ich ab ändern damit ich die 13 Werte in der List box sehe?
Top
#26
Kann vielleicht sonst jemand Unterstützen?
Top
#27
Hallo,

welchen Wert hat iCnt bei der Fehlermeldung. Und welchen Wert hat die Zelle Cells(iCnt, 38)?
Gruß Stefan
Win 10 / Office 2016
Top
#28
Hallo Steffl,

iCnt1% = 42 und die Cells(iCnt, 38) = 42.
With Me.ListBox1 = leer
und iCnt2 hat 10
Top
#29
Hallo,

in dem Fall kannst Du nur 10 Spalten befüllen.
Gruß Stefan
Win 10 / Office 2016
Top
#30
Hallöchen,

Zitat:in dem Fall kannst Du nur 10 Spalten befüllen

auf die Art und Weise bekommt man generell nur 10 Spalte gefüllt Sad Man müsste die Daten erst in einArray überführen und damit die Listbox in einemRutsch füllen.

Im Prinzip so:

Code:
Private Sub UserForm_Initialize()
Dim icnt1%, icnt2%, arrTemp
'Array fuer ersten Eintrag vorbereiten
ReDim arrTemp(12, 0)
'Schleife ueber alle Zeilen
For icnt1 = 0 To 3
  'Schleife ueber alle Spalten
  For icnt2 = 0 To 12
    'Zeile hinzufuegen
    arrTemp(icnt2, icnt1) = Cells(icnt2 + 1, icnt1 + 1)
  'Ende Schleife ueber alle Spalten
  Next
  'Array fuer naechsten Eintrag vorbereiten
  If icnt1 < 3 Then ReDim Preserve arrTemp(12, icnt1 + 1)
'Ende Schleife ueber alle Zeilen
Next
'Array in Listbox uebernehmen
Me.ListBox1.List = arrTemp
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste