Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
1736to1740
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Suche VBA Lösung zu

Suche VBA Lösung zu
10.02.2020 18:04:24
Thomas
Guten Abend, da ich mich letzte Woche sehr ungenau ausgedrückt hatte versuche ich es nochmal.
Mich würde interessieren wie das geht: In Tabelle1 habe ich drei Spalten, 1. Spalte sind Artikel Nummern, zweite Spalte sind Artikeltexte und 3. Spalte enthält die Preise.
Nun will ich über ein Suchfeld die Artikelnummer eingeben und diesen Artikel dadurch suchen. Dann sollte es diese Zeile wo diese Artikelnummer enthalten ist in Tabelle2 kopieren und das aber ab Spalte 5 und Zeile10. Und da soll es dann die folgenden Artikel die ich suche eins nach dem andern auflisten. Also ich bin Anfänger und ich habe jetzt drei Nächte lang ein Lösung versucht hinzubekommen :-( Leider geht da garnichts. :-( Vielleicht hat da jemand eine gute Idee?

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suche VBA Lösung zu
10.02.2020 18:25:49
Regina
Hi Thomas,
ich habe Dir mal eine Datei angehängt, in der folgender Code enthalten ist:
Public Sub Uebertrag()
Dim obj_wks_ziel As Worksheet
Dim obj_wks_quelle As Worksheet
Dim lng_letzte_zeile As Long
Dim lng_zeile As Long
Dim rng_gefunden As Range
Dim lng_artikelnummer As Long
Set obj_wks_ziel = Worksheets("Tabelle2")  ' Hier Zieltabellenblatt benennen
Set obj_wks_quelle = Worksheets("Tabelle1")  ' Hier Quelltabellenblatt benennen
lng_letzte_zeile = obj_wks_ziel.Cells(Rows.Count, 5).End(xlUp).Row + 1 ' Erste leere zeile im  _
Zielblatt ermitteln
lng_artikelnummer = InputBox("Gesuchte Artikelnummer")
Set rng_gefunden = obj_wks_quelle.Range("A:A").Find(lng_artikelnummer)
If Not rng_gefunden Is Nothing Then
lng_zeile = rng_gefunden.Row
obj_wks_quelle.Range("A" & lng_zeile & ":C" & lng_zeile).Copy _
obj_wks_ziel.Cells(lng_letzte_zeile, 5)
Else
MsgBox "Artikelnummer nicht gefunden!"
End If
End Sub
https://www.herber.de/bbs/user/135114.xlsm
Schau mal, ob das passt.
gruß
Regina
Anzeige
AW: Suche VBA Lösung zu
11.02.2020 05:16:29
Thomas
Guten Morgen,
das ist denn schön wenn man morgens aufsteht und sowas erfreuliches liest.
Lieben Dank ich werde mir das ab Abend ansehen wenn ich von der Arbeit zurück bin.
Danke und LG Thomas
AW: Suche VBA Lösung zu
11.02.2020 05:28:05
Thomas
Hallo Regina,
ich bin es nochmal. Ich habe noch etwas vergessen. Kann man hier auch noch eine Erweiterung machen die so wäre, das wenn 10 Zeilen gefüllt wurden, dass es dann Rechts davon einen neuen Block ab der 5ten Zeile weiter einzufügen?
Danke und Grüsse Thomas
AW: Suche VBA Lösung zu
11.02.2020 15:39:07
Regina
... dann teste mal diesen Code:
Public Sub Uebertrag()
Dim obj_wks_ziel As Worksheet
Dim obj_wks_quelle As Worksheet
Dim lng_letzte_zeile As Long
Dim lng_zeile As Long
Dim lng_spalte As Long
Dim rng_gefunden As Range
Dim lng_artikelnummer As Long
Set obj_wks_ziel = Worksheets("Tabelle2")  ' Hier Zieltabellenblatt benennen
Set obj_wks_quelle = Worksheets("Tabelle1")  ' Hier Quelltabellenblatt benennen
For lng_spalte = 5 To Columns.Count Step 4
lng_letzte_zeile = obj_wks_ziel.Cells(Rows.Count, lng_spalte).End(xlUp).Row + 1 ' Erste  _
leere zeile im Zielblatt ermitteln
If lng_letzte_zeile 
Das ist ein bisschen "von hinten durch die Brust ins Auge"...Wenn das nicht passt, musst Du mal eine Beispielmappe posten.
Gruß
Regina
Anzeige
AW: Suche VBA Lösung zu
11.02.2020 17:21:21
Thomas
Hallo Regina, wie das auch immer ist das funktioniert aber tadellos :-) Ein Problem erkenne ich gerade noch. Wenn ich auf den Botton Abbrechen klicke dann kommt eine Fehlermeldung.
Es grüst
Thomas
AW: Suche VBA Lösung zu
11.02.2020 17:49:53
Regina
HI,
dann so:
Public Sub Uebertrag()
On Error GoTo fehler
Dim obj_wks_ziel As Worksheet
Dim obj_wks_quelle As Worksheet
Dim lng_letzte_zeile As Long
Dim lng_zeile As Long
Dim lng_spalte As Long
Dim rng_gefunden As Range
Dim lng_artikelnummer As Long
Set obj_wks_ziel = Worksheets("Tabelle2")  ' Hier Zieltabellenblatt benennen
Set obj_wks_quelle = Worksheets("Tabelle1")  ' Hier Quelltabellenblatt benennen
For lng_spalte = 5 To Columns.Count Step 4
lng_letzte_zeile = obj_wks_ziel.Cells(Rows.Count, lng_spalte).End(xlUp).Row + 1 ' Erste  _
leere zeile im Zielblatt ermitteln
If lng_letzte_zeile 
gruß
Regina
Anzeige
AW: Suche VBA Lösung zu
12.02.2020 12:01:18
Thomas
Hallo Regina, besten Dank es funktioniert tip top:
Ein Frage noch: Ist das Möglich eine Schleife einzubauen um das einfügen zu limitieren. Zum Beispiel wenn es die 3. Spalte bis unten gefüllt hat müsste eine Meldung kommen die Sagt dass die Tabelle voll ist und dann das Programm schliess.
Es grüsst
Thomas
AW: Suche VBA Lösung zu
12.02.2020 17:09:43
Regina
Hallo Thomas,
da würde so laufen:
Public Sub Uebertrag()
Dim obj_wks_ziel As Worksheet
Dim obj_wks_quelle As Worksheet
Dim lng_letzte_zeile As Long
Dim lng_zeile As Long
Dim lng_spalte As Long
Dim rng_gefunden As Range
Dim lng_artikelnummer As Long
Set obj_wks_ziel = Worksheets("Tabelle2")  ' Hier Zieltabellenblatt benennen
Set obj_wks_quelle = Worksheets("Tabelle1")  ' Hier Quelltabellenblatt benennen
For lng_spalte = 5 To Columns.Count Step 4
lng_letzte_zeile = obj_wks_ziel.Cells(Rows.Count, lng_spalte).End(xlUp).Row + 1 ' Erste  _
leere zeile im Zielblatt ermitteln
If lng_letzte_zeile  13 Then  ' bei 3 Spalten 13, bei 4 Spalten 17, bei 5 Spalten 21
MsgBox "Es wurden bereits 3 Spalten mit Artikelnummern gefüllt!"
Exit Sub
End If
If lng_letzte_zeile 
Gruß Regina
Anzeige
AW: Suche VBA Lösung zu
13.02.2020 08:49:05
Thomas
Guten Morgen Regina,
super damit hast du mir sehr viel weiter geholfen. Anhand von Zahlen kann ich auch etwas verändern daran. Schäme mich das ich dieses nicht alleine hinkriege zur Zeit.
Ich habe noch eine Frage zu den Spalten beim letzten Code den du mir da eingefügt hast. "bei 3 Spalten 13, bei 4 Spalten 17, bei 5 Spalten 21"
Kanns du mir erklären was da für eine Logik dahinter steckt, das würde mich interessieren. Damit nur zwei Spalten ausgegeben werden habe ich die 5 genommen. Das geht sogar. Aber ich kann es zum verstehen nicht logisch zuordnen.
Vielleicht hättest du mir hierzu noch eine kleine Erklärung?
Besten Dank und Grüsse
Thomas
Anzeige
AW: Suche VBA Lösung zu
13.02.2020 12:22:38
Thomas
Hallo Regina, habe es nun gescheckt! :-) Habe die Kurve gekriegt.
Danke für Deine Hilfe die war mir sehr wertvoll. Man sollte hier eigentlich eine virtuelle Kasse einbauen dass man solche Hilfe die einem weiter bringen auch unterstützen könnte.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige