Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
952to956
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
952to956
952to956
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Suche Wert - Anzeige aller Werte in der Zeile!
21.02.2008 14:17:32
Sven
Hallo zusammen,
brauche eure Hilfe.
Ich lasse per InputBox eine bestimmte Zelle suchen. Ist der Wert gefunden starte ich eine weitere Userform und lasse diesen Wert in (Userform5) textbox1 schreiben. So weit so gut.
Der gefundene Wert steht in einer bestimmten Zeile - aus dieser Zeile sollen dann vorangegangene Werte und nach folgende Werte in bestimmte textboxen übertragen werden.
Also Beispiel - per inputbox suche ich die Partnummer XYZ
Diese wird gefunden - Userform4 verschwindet und Userform5 taucht auf.
In der Textbox1 der Userform 5 steht jetzt der Wert der vorher gesucht wurde.
Textbox2 soll jetzt den Firmennamen anzeigen welcher 2 Zeilen vor der Partnummer XYZ steht.
Partnummer XYZ steht zb. in C16 - und in A16 steht dann der Firmenname - und genau das bekomme ich nicht hin!
Mein Code:

Private Sub CommandButton1_Click()
Dim strPart As String
Dim cRange As Range
strPart = InputBox("Part Nummer eingeben:", "Dialog", "")
Set cRange = (Sheets("Übersicht").Range("C4:C30000").Find(What:=strPart, LookAt:=xlWhole))
cRange.EntireRow.Select
UserForm4.Hide
UserForm5.Show
TextBox1 = cRange.Text
End Sub


danke vorab.
Gruß Sven

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suche Wert - Anzeige aller Werte in der Zeile!
21.02.2008 14:40:00
Rudi
Hallo,
Firmenname=cRange.Offset(0,-2).value
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Suche Wert - Anzeige aller Werte in der Zeile!
21.02.2008 15:17:20
Sven
Hallo,
vielen Dank - jetzt sollte es funktionieren.
Dennoch bekomme ich jetzt einen fehler ausgegeben wegen cRange.entireRow.select
textbox2 = cRange.Offset(0,-2).value habe ich hinzugefügt.
Habe auch versucht eine neue Variable festzulegen jedoch komme ich jetzt immer an eine Fehlermeldung.
cRange.entireRow.select muss ich doch sicher anpassen das nicht die ganze Zeile ausgewählt wird sondern nur die gesuchte Zelle und dann müsste es funktionieren ... alle meine Versuche scheitern.
Wie gesagt bin ich eigentlich ein VBA nicht könner ... ich bastel mir alles hier aus dem Forum zusammen.
danke schonmal

Anzeige
AW: Suche Wert - Anzeige aller Werte in der Zeile!
21.02.2008 15:29:08
Rudi
Hallo,

wegen cRange.entireRow.select


dann lass es weg.
cRange ist eine Variable, die auf eine Zelle verweist. Damit kannst du alles machen.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Suche Wert - Anzeige aller Werte in der Zeile!
21.02.2008 15:32:57
Sven
Super hat funktioniert ...
Kann es sein das sich VBA bei Anfängern manchmal aufhängt !?
Irgendwie ging nix mehr - nicht mal das was vorher funktionierte - und jetzt auf einmal geht was ich wollte.
Hier nochmal der Code für alle die es interessiert:

Private Sub CommandButton1_Click()
Dim strPart As String
Dim cRange As Range
strPart = InputBox("Part Nummer eingeben:", "Dialog", "")
Set cRange = (Sheets("Übersicht").Range("C4:C30000").Find(What:=strPart, LookAt:=xlWhole))
cRange.EntireRow.Select
UserForm4.Hide
UserForm5.Show
UserForm5.TextBox1 = cRange.Text
UserForm5.TextBox2.Text = cRange.Offset(0, -2).Value
End Sub


Vielen Dank

Anzeige
AW: Suche Wert - Anzeige aller Werte in der Zeile!
21.02.2008 16:24:00
Sven
HI nochmal ich,
ich habe jetzt ein Phänomen.
mal funktioniert es und manchmal nicht !?
Muss ich vielleicht nach jeder erfolgreichen zuordnung die Userform "entladen" und neu "laden" !?
Jetzt bekomme ich auf einmal - nichts mehr angezeigt.
Mein Code:

Private Sub CommandButton1_Click()
Dim strPart As String
Dim cRange As Range
strPart = InputBox("Part Nummer eingeben:", "Dialog", "")
Set cRange = (Sheets("Übersicht").Range("C4:C30000").Find(What:=strPart, LookAt:=xlWhole))
cRange.EntireRow.Select
UserForm4.Hide
UserForm5.Show
UserForm5.TextBox1.Text = cRange.Text
UserForm5.TextBox2.Text = cRange.Offset(0, -2).Value
UserForm5.TextBox3.Text = cRange.Offset(0, 3).Value
UserForm5.TextBox4.Text = cRange.Offset(0, 2).Value
UserForm5.TextBox5.Text = cRange.Offset(0, 4).Value
UserForm5.TextBox6.Text = cRange.Offset(0, -1).Value
End Sub


..aber was komisch ist - erst hat es funktioniert und jetzt nicht mehr.
Danke

Anzeige
AW: Suche Wert - Anzeige aller Werte in der Zeile!
25.02.2008 01:15:00
fcs
Hallo Sven,
du muss die Reihenfolge der Code-Zeilen korrigieren.
Erst die Werte den Text-Boxen im Userform5 zuweisen, dann das Userform5 anzeigen.
Die Werte werden sonst den Text-Boxen erst zugewiesen, wenn du das Userform5 wieder schließt. Prozeduren werden in Excel beim Schließen eines Formulars (per UserformX.Hide oder Unload UserformX) an der Stelle fortgesetzt, an der das Userform per UserformX.Show aufgerufen wurde.
Das Phänomen, dass es bei dir scheinbar manchmal funktioniert und manchmal nicht, liegt daran, das du wahrscheinlich das Userform5 in keiner Prozedur per
Unload Userform5
aus dem Speicher entfernst. Dadurch bleiben die den Steuerelementen des Userforms zugewiesenen Werte erhalten bis zum nächsten Aufruf des Formulars.
Zusätzlich solltest du eine Prüfung einbauen, ob die Teilenummer gefunden wurde, sonst bricht die Prozedur mit einer Fehlermeldung ab.
Gruß
Franz

Private Sub CommandButton1_Click()
Dim strPart As String
Dim cRange As Range
strPart = InputBox("Part Nummer eingeben:", "Dialog", "")
Set cRange = (Sheets("Übersicht").Range("C4:C30000").Find(What:=strPart, LookAt:=xlWhole))
If cRange is Nothing Then
MsgBox "Teilenummer """ & strPart & """ nicht gefunden!"
Else
cRange.EntireRow.Select 'Zeile ist für das Userform nicht unbedingt erforderlich
UserForm4.Hide
UserForm5.TextBox1.Text = cRange.Text
UserForm5.TextBox2.Text = cRange.Offset(0, -2).Value
UserForm5.TextBox3.Text = cRange.Offset(0, 3).Value
UserForm5.TextBox4.Text = cRange.Offset(0, 2).Value
UserForm5.TextBox5.Text = cRange.Offset(0, 4).Value
UserForm5.TextBox6.Text = cRange.Offset(0, -1).Value
UserForm5.Show
End If
End Sub


Anzeige
AW: Suche Wert - Anzeige aller Werte in der Zeile!
25.02.2008 16:56:00
Sven
Hallo Franz,
vielen Dank für deine Hilfe.
Habe es abgeändert und es funktioniert einwandfrei.
Das mit dem unload ist schon interessant zu wissen. Sollte ich dann wohl besser bei allen Userformen verweden !?, oder !?
Dieses Problem ist ja eigentlich gelöst, aber ...
Was ich vergessen habe : Es kann natürlich sein das gewisse Teilenummern mehrfach vorkommen.
Kann ich einen weiteren Button einfügen der "weitersucht" ?
In meinem Geiste theoretisch möglich - man sage dem VB das die gefundene Teilenummer der neue Startpunk +1 ist und lässt erneut suchen.
Am besten wäre wenn man per vor und zurück button die einzelnen Ergebnisse durchklicken kann ...
Jedoch mangelt es mir dies umzusetzen ...
Ich habe auch eine "weitersuchen" Funktion hier im Forum gefunden - jedoch kann ich sie nicht anpassen sie funktioniert einfach nicht.
Über Hilfe würd ich mich sehr freuen.
Danke

Anzeige
AW: Suche Wert - Anzeige aller Werte in der Zeile!
25.02.2008 20:00:00
fcs
Sven,
Unload ist nicht zwingend erforderlich, aber immer dann wenn die Daten eines Formulars in weiteren Prozeduren nicht mehr benötigt werden, dann sollte man Unload statt Hide verwenden. Spätestens mit dem Schliessen der Datei verschwindnen auch die Userformdaten im Daten-Nirwana.
Die Prozeduren zum Suchen weiterer gleicher Teilenummern im Userform5 hab ich nachfolgend zusammengestellt. Dazu muss du im Userform5 zwei Schaltflächen (Commandbuttons) einrichten.
Die Prozeduren muss du im vorhandenen Code des Useforms ergänzen.
Gruß
Franz

'Deklarieren der Variablen, die ihre Werte behalten sollen, solange das Userform _
geöffnet ist
Private varSuchbegriff As Variant
Private cRange As Range
Private rngBereich As Range
Private Sub CommandButton1_Click()
'Schließen-Button
Unload Me
End Sub
Private Sub CommandButton2_Click()
'Suchen nächsten Teilenummer-Eintrag
Call Suchen(xlNext)
End Sub
Private Sub CommandButton3_Click()
'Suchen vorherigen Teilenummer-Eintrag
Call Suchen(xlPrevious)
End Sub
Private Sub Suchen(Richtung As Long)
Dim strAddress As String
strAddress = cRange.Address
Set cRange = rngBereich.Find(What:=varSuchbegriff, LookAt:=xlWhole, LookIn:=xlValues, _
After:=cRange, searchdirection:=Richtung)
If cRange.Address = strAddress Then
MsgBox "Diese Teile-Nummer ist nur einmal vorhanden!"
Else
cRange.EntireRow.Select
With UserForm5
.TextBox1.Text = cRange.Text
.TextBox2.Text = cRange.Offset(0, -2).Value
.TextBox3.Text = cRange.Offset(0, 3).Value
.TextBox4.Text = cRange.Offset(0, 2).Value
.TextBox5.Text = cRange.Offset(0, 4).Value
.TextBox6.Text = cRange.Offset(0, -1).Value
End With
End If
End Sub
Private Sub UserForm_Activate()
'Initialisieren von Variablen beim Anzeigen des Userforms
Set rngBereich = Worksheets("Übersicht").Range("C4:C30000") 'Zellen mit Teilenummer
varSuchbegriff = TextBox1.Text 'Teilenummer
'1. Position des Suchbegriffs nochmals suchen
Set cRange = rngBereich.Find(What:=varSuchbegriff, LookAt:=xlWhole, LookIn:=xlValues)
End Sub


Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige