Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
werte in tabelle suche
22.03.2009 20:51:26
kirsche
hallo leute,
mal wieder stehe ich vor einem problem und hoffe auf eure hilfe.
ich möchte über eine userform daten nach bestimmten kriterien von einer tabelle in eine andere übertragen. das klappt mit meinem makro auch schon ganz gut, leider nur solange die reihenfolge des suchbegriffs beider tabellen überein stimmen. sofern ein suchbegriff fehlt, hört das makro auf zu suchen.
kann mir jemand sagen, wie ich mein makro umbauen muß?
https://www.herber.de/bbs/user/60565.xls
gruß kirsche

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: werte in tabelle suche
23.03.2009 17:08:51
fcs
Hallo kirsche,
du muss dann die zusammengesetzte Nummer in der Stammdatentabelle suchen. Entweder mit der Suchfunktion oder in einer Schleife, die immer wieder in der 1. Zeile mit der Suche beginnt.
Beispiel fürr Commandbutton1.
Gruß
Franz

Private Sub CommandButton1_Click()
Dim lZeile    As Long      ' For/Next Zeilen-Index Vordruck
Dim lLetzte_A As Long      ' die letzte Zeile in der Artikelstamm
Dim lZeile_A  As Long      ' die gefundene Zeile in der Artikelstamm
Dim WkSh_A    As Worksheet ' das Tabellenblatt "Artikelstamm"
Dim WkSh_T    As Worksheet ' das Tabellenblatt "Aufteiler"
Dim varSuchen As Variant, rZelle  As Range
'   kein Bildschirm-Update während der Verarbeitung zulassen
Application.ScreenUpdating = False
Set WkSh_A = Worksheets("Daten")
'       die letzte belegte Zeile im Blatt "Daten" gemäß Spalte B
With WkSh_A
lLetzte_A = IIf(.Cells(.Rows.Count, 2)  "", .Rows.Count, _
.Cells(.Rows.Count, 2).End(xlUp).Row)
End With
Set WkSh_T = Worksheets("Aufteiler")
With WkSh_T
'Altdaten löschen
.Range("E20:M" & .Cells(.Rows.Count, 1).End(xlUp).Row).ClearContents
'   Artikel in das Tabellenblatt "Aufteiler" einfügen
'die passenden Einzelauflistungen aus der Eingabe holen
'daten holen ohne formatierung aus dem artikelstamm
For lZeile = 20 To IIf(.Cells(.Rows.Count, 1)  "", .Rows.Count, _
.Cells(.Rows.Count, 1).End(xlUp).Row)
If Range("C" & lZeile).Value = "w" Then
varSuchen = ""
With .Range("A" & lZeile)
If .Value  "" Then
varSuchen = Trim(.Value & " " & Label1.Caption) 'LIEFERNUMMER
End If
End With
If varSuchen  "" Then
'Suchen der Liefernummer im Artikelstamm Spalte A (1)
With WkSh_A
Set rZelle = .Range(.Cells(2, 1), .Cells(lLetzte_A, 1)).Find(what:=varSuchen, _
LookIn:=xlValues, lookat:=xlPart)
End With
If Not rZelle Is Nothing Then
lZeile_A = rZelle.Row
.Range("E" & lZeile).Value = Trim(WkSh_A.Range("Q" & lZeile_A).Value) '1.menge
.Range("F" & lZeile).Value = Trim(WkSh_A.Range("R" & lZeile_A).Value) '2.menge
.Range("G" & lZeile).Value = Trim(WkSh_A.Range("S" & lZeile_A).Value) '3.menge
.Range("H" & lZeile).Value = Trim(WkSh_A.Range("T" & lZeile_A).Value) '4.menge
.Range("I" & lZeile).Value = Trim(WkSh_A.Range("U" & lZeile_A).Value) '5.menge
.Range("J" & lZeile).Value = Trim(WkSh_A.Range("V" & lZeile_A).Value) '6.menge
.Range("K" & lZeile).Value = Trim(WkSh_A.Range("W" & lZeile_A).Value) '7.menge
.Range("L" & lZeile).Value = Trim(WkSh_A.Range("X" & lZeile_A).Value) '8.menge
.Range("M" & lZeile).Value = Trim(WkSh_A.Range("Y" & lZeile_A).Value) ' _
gesamtmenge
End If
End If
End If
Next lZeile
End With
Unload Me
End Sub


Anzeige
AW: werte in tabelle suche
24.03.2009 21:18:44
kirsche
hallo franz,
danke für deine mühe und hilfe. ich habe auch noch lange am sonntag und gestern getüfftelt und bin dann zu folgendem ergebnis gekommen.
ich habe mir eine textbox eingefügt, in welcher die nummer zusammen gesetzt und damit gesucht wird.

Private Sub CommandButton1_Click()
Dim lZeile    As Long      ' For/Next Zeilen-Index Vordruck
Dim lLetzte_A As Long      ' die letzte Zeile in der Artikelstamm
Dim lZeile_A  As Long      ' die gefundene Zeile in der Artikelstamm
Dim WkSh_A    As Worksheet ' das Tabellenblatt "Artikelstamm"
Dim rZelle  As Range
'   kein Bildschirm-Update während der Verarbeitung zulassen
Application.ScreenUpdating = False
Set WkSh_A = Worksheets("Daten")
Range("E20:M291").Value = ""
'   Artikel in das Tabellenblatt "Aufteiler" einfügen
With Worksheets("Aufteiler")
'       die letzte belegte Zeile im Blatt "Daten" gemäß Spalte B
lLetzte_A = IIf(WkSh_A.Range("B65536")  "", 65536, WkSh_A.Range("B65536").End(xlUp).Row) _
'       die passenden Einzelauflistungen aus der Eingabe holen
lZeile = 20
'daten holen ohne formatierung aus dem artikelstamm
For lZeile_A = 2 To lLetzte_A
If Range("C" & lZeile).Value = "w" Then
TextBox1.Value = Range("A" & lZeile).Value & " " & Label1.Caption
Set rZelle = Worksheets("Daten").Range("A2:A" & lLetzte_A) _
.Find(TextBox1.Value, lookat:=xlWhole, LookIn:=xlValues)
If rZelle Is Nothing Then
lZeile = lZeile + 4
End If
If Not rZelle Is Nothing Then
Range("E" & lZeile).Value = Trim(WkSh_A.Cells(rZelle.Row, 17).Value) '1menge
Range("F" & lZeile).Value = Trim(WkSh_A.Cells(rZelle.Row, 18).Value) '2menge
Range("G" & lZeile).Value = Trim(WkSh_A.Cells(rZelle.Row, 19).Value) '3menge
Range("H" & lZeile).Value = Trim(WkSh_A.Cells(rZelle.Row, 20).Value) '4menge
Range("I" & lZeile).Value = Trim(WkSh_A.Cells(rZelle.Row, 21).Value) '4menge
Range("J" & lZeile).Value = Trim(WkSh_A.Cells(rZelle.Row, 22).Value) '5menge
Range("K" & lZeile).Value = Trim(WkSh_A.Cells(rZelle.Row, 23).Value) '6menge
Range("L" & lZeile).Value = Trim(WkSh_A.Cells(rZelle.Row, 24).Value) '7menge
Range("M" & lZeile).Value = Trim(WkSh_A.Cells(rZelle.Row, 25).Value) ' _
gesamtmenge
lZeile = lZeile + 4
End If
End If
Next lZeile_A
End With
End Sub


das sieht soweit auch gut aus und scheint zu funktionieren.
gruß kirsche

Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige