PDA

Vollständige Version anzeigen : Über Schleife nur bestimmte Werte einer Zeile auslesen


Fernando123
11.07.2011, 07:56
Hallo Excel-Freunde,
habe mal wieder für meine Verhältnisse ein großes Problem.
Über eine textbox gebe ich die zu suchende nummer ein. Wenn er sie gefunden hat soll er mir in die textboxen(am besten in der bsp anschauen) die werte die in der bestimmten zeile der Tabelle sind füllen. Aber auch da wo auch wirklich was in der bez. steht. Die textboxen sollen fortlaufend gefülllt werden.(Am besten nach zu vollziehen mit der excel.datei)
Man müsste dies irgendwie über eine Schleife laufen lassen müssen. Aber bekomme es einfach nicht hin. Bin echt verzweifelt. Hoffe ihr könnt mir helfen.
Danke

Hajo_Zi
11.07.2011, 09:52
Hallo Fernando,

sehe ich das richtig die Nummer gibt es nur einmal? und es soll nur Lager und Vertreter eingetragen werden? Die Felder sind eindeutig beschriftet.
Was mehr eingetragen werden sollte?
Such mit Find, dann hast Du die Zeile. Bei Tag Eigenschaft der Textbox die Spalte eintragen. Dann eine Schleife über alle Textboxen und werte eintragen. Das ist mr zu aufwendig die Vorbereitung.

<img src="http://Hajo-Excel.de/images/grusz1.gif" align="middle" height="40" alt="Grußformel"><a href="http://Hajo-Excel.de/index.htm" onclick="window.open(this.href);return false"><img border="0" src="http://Hajo-Excel.de/images/logo_hajo3.gif" align="middle" height="40" alt="Homepage"></a>

Fernando123
11.07.2011, 09:56
Hallo
die nummer gibt es nur einmal
aber lager und vertrer soll aus der tabelle in die textboxen eingelsen werden.
das hab ich auch hinbekommen
nur das er mir jetzt textboxen füllt mit den werten die in der tabelle vorhanden sind
wenn keine bez. ausgefüllt ist, soll er mir auch keine textbox anzeigen
weiss halt einfach nur nicht wie das in eine schleife packen soll

hast du eine idee?

Chen
11.07.2011, 10:54
Hallo,

ich habe zwar keine Lösung jedoch ist es sicher hilfreich, wenn ich das eigentliche Problem benenne:
Wie können Textboxen in einer Schleife angesprochen werden?
Hajo hat ja bereits die Tag-Eigenschaft erwähnt. Wie kann man auf diese zugreifen, wenn man den Namen variabel halten will?

Peter9
11.07.2011, 10:59
Hallo Fernando,


wenn Du deine Labal´s und deine TextBoxen richtig Sortieren würdest dan geht das mit dem code sonst gibt es überschreibungen deiner Label´s
da sollte schon eine gewisse Reihenfolge beachtet werden

Private Sub CommandButton1_Click()
Dim a
Dim i, q, ff
i = 1: q = 0
Dim Loletzte As String, zelle As String

On Error Resume Next
zelle = Application.Match(CLng(TextBox25.Value), Worksheets("Tabelle1").Columns(1), 0)
If Not zelle = "" Then 'Exit Sub
Worksheets("Tabelle1").Activate
a = 1
TextBox27 = Cells(zelle, 7).Value
TextBox26 = Cells(zelle, 5).Value
Do
Me("Label" & a) = Cells(zelle - 2, 11 + q).Value
Me("TextBox" & i) = Cells(zelle, 12 + q).Value
Me("TextBox" & 1 + i) = Cells(zelle, 14 + q).Value
Me("TextBox" & 2 + i) = Cells(zelle, 16 + q).Value

i = i + 3
q = q + 7
a = a + 1
Loop Until Cells(zelle - 1, q).Value = ""
Else
MsgBox "Datensatz existiert nicht !?"
End If
MsgBox i
End Sub


Änderung
hab das mal Sortiert also bitte beim nächsten mal drauf achten

<div style="width:100px; text-align:center; color:black; font-style:italic; font-size:0.8em; font-family:Tahoma; background-color:#99FF99;margin-left:5px; margin-top:15px; padding:4px; border:3px double darkgreen;"><span title="Gruss" class="webdeveloper-display-div-order"></span>« Gruß Peter9 »</div>

EarlFred
11.07.2011, 11:18
@Peter, @Chen

wenn Du deine Labal´s und deine TextBoxen richtig Sortieren würdest
und
Wie können Textboxen in einer Schleife angesprochen werden?
Siehe hier:
http://www.ms-office-forum.de/forum/showpost.php?p=1380183&postcount=7

Die neue Userform sieht wieder aus wie Kraut und Rüben... Zum Haareraufen.

Grüße
EarlFred

Hajo_Zi
11.07.2011, 11:23
Hallo Chen,

bin ich damit gemeint?
Wie kann man auf diese zugreifen, wenn man den Namen variabel halten will?
Was meinst Du mit Variabel. Bei Textbox1 steht z.b. B mit find habe ich die Zeile also Range(Textbox1.Tag & RaFound.Row)

<a href="http://Hajo-Excel.de/index.htm" target="_blank" title="Hajo's Excelseiten">Gruß Hajo</a>

Fernando123
11.07.2011, 11:25
danke
ich werde mal versuchen damit was hin zu bekommen
werde mich dann wieder mlden
danke euch

Chen
11.07.2011, 11:48
Hallo Hajo,

mit variabel meinte ich, dass man innerhalb der Schleife nicht jeden Namen einzeln eingeben will und sich dieser daher veändern muss. Das funktioniert über Me.Controls (wie ich nun weiß). Im Nachhinein verstehe ich auch dein Vorgehen. Danke für die Infos.

Hajo_Zi
11.07.2011, 12:08
Hallo Chen,

das ist eben der Vorteil von der Variante der Name der Textbox ist nicht von interesse, da die Tag Eigenschaft die Spalte angibt. Ich bin aber Trotzdem der Auffassung man sollte ich glaube die Hungarische Notation für den Namen benutzen und er sollte auch sprechend sein z.B. TxT_EndDatum

<a href="http://Hajo-Excel.de/index.htm" target="_blank" title="Hajo's Excelseiten">Gruß Hajo</a>

Fernando123
11.07.2011, 13:57
danke Peter
das is fast wie ich es mir vorstelle
nur wollte ich die labels auch das diese sich selbständig füllen
also ich wollte keine labels oder textboxen hinzufügen. ich wollte nur mit denen auskommen wie in meinem bsp. Also wenn unter bez nichts steht. dann soll auch nichts gefüllt werden. Ist nur garten 2 vorhanden dann in das erste label garten 2 und die daten in die textboxen. Ist das prinzipiell möglcih?
weil in meiner original tabelle hab ich zu viel möglcihe bez. um für jedes ein label zu machen
hoffe ihr habt eine geniale idee
danke

Peter9
11.07.2011, 17:30
hallo Fernando,

hier mal die geänderte Datei wird aber ganz schön eng so einzeln
ich habe Dir mal Eine MultiPage eingesetzt schau mal damit musstest Du auskommen


<div style="width:100px; text-align:center; color:black; font-style:italic; font-size:0.8em; font-family:Tahoma; background-color:#99FF99;margin-left:5px; margin-top:15px; padding:4px; border:3px double darkgreen;"><span title="Gruss" class="webdeveloper-display-div-order"></span>« Gruß Peter9 »</div>

Fernando123
12.07.2011, 07:37
servus peter
funktioniert einwandfrei
aber ich bräuchte eigentlich nur einen multipage. die genügen mir vollkommen.
ich versuchs mal nur mit einem multipage um zu schreiben
ich hoffe es kalppt
danke

Fernando123
12.07.2011, 09:59
peter könntest du ganze ohne die 2. page reinstellen?
klappt irgendwie net
2. problem
ich muss bei meiner version auf eine externe excel.datei zugreifen
ich muss wohl diese codezeile ändern
aber wie?

' Suchen der Nummer
On Error Resume Next
zelle = Application.Match(CLng(TextBox55.Value), Worksheets("Tabelle1").Columns(1), 0)
If Not zelle = "" Then 'Exit Sub

wäre hammer wenn du mir helfen könntest
danke
danke

Peter9
12.07.2011, 12:21
Hallo Fernamdo,

estmal eine Frage
1.)
Du hattest gesagt es gibt noch mehr "bez. " also wird das dann auf einen Fehler hinauslaufen wenn wirklich Mehr "bez. " vorhanden sind deshalb würde ich das mit der MultiPage machen
2.)
Sieht die Tabelle die Extern aufgerufen werden soll im Aufbau genauso aus?
3.)
' Suchen der Nummer
On Error Resume Next
zelle = Application.Match(CLng(TextBox55.Value), Worksheets("Tabelle1").Columns(1), 0)
If Not zelle = "" Then 'Exit Sub

daran darf nichts geändert werden das ist das Suchen nach deinen Kunden auser die Tabelle stimmt nicht dann müßte Tabelle2 o. 3 da stehen


so hier mal die geänderte Datei "Suchen_fernando_v9.xlsm"
ohne MultiPage dafür mit Fehler meldungen wenn mehr "bez. " vorhanden sind

<div style="width:100px; text-align:center; color:black; font-style:italic; font-size:0.8em; font-family:Tahoma; background-color:#99FF99;margin-left:5px; margin-top:15px; padding:4px; border:3px double darkgreen;"><span title="Gruss" class="webdeveloper-display-div-order"></span>« Gruß Peter9 »</div>

Fernando123
12.07.2011, 12:42
danke
ja die tabelle soll extern aufgerufen werden, diese sieht ungefähr so aus
aber das ändern der zellbezüge sollte kein problem sein (also die zu suchenende steht bei der extern auch in der gersten zeile)
nur sucht er anscheinend gar nicht in der externen der tabelle
habe ganz normal mit workbooks.open und select(tabelle) earbeitet und er öffnet mir auch die tabelle aber anscheinend liest er gar nicht in der externen
kannst du mir ein bsp. gben welchen befehl ich an einem bestimmten punkt bringen muss um die externe richtig zu öffnen?

Peter9
12.07.2011, 13:08
Hallo Fernando

hier mal die geänderte Datei " Suchen_fernando_v10.xlsm"

auf den Button drucken und 12345 eingeben dann kommt ein FielDialog
mit dem suchst du die "Suchen_fernando_v9.xlsm" und schwupp die Daten sind drin

<div style="width:100px; text-align:center; color:black; font-style:italic; font-size:0.8em; font-family:Tahoma; background-color:#99FF99;margin-left:5px; margin-top:15px; padding:4px; border:3px double darkgreen;"><span title="Gruss" class="webdeveloper-display-div-order"></span>« Gruß Peter9 »</div>

Fernando123
12.07.2011, 13:33
danke sp müssts funktionieren
muss es gleich machen
aber kann man die datei auch im hintergrund öffen, also im quellcode den pfad angeben?
danke

Peter9
12.07.2011, 13:49
HAllo Fernando

naklar geht das wenn Du den Fildialog auskommentierst und bei Datiename
Pfad und Dateiname angibst

Private Sub CommandButton1_Click()
Dim a As Long
Dim i As Long, q As Long, f As Long
Dim Name, Nameb
Dim Dateiname As String
i = 1: q = 0: f = 1
Dim Loletzte As String, zelle As String

Nameb = ActiveWorkbook.Name
If IsNumeric(TextBox55.Value) Then

ChDir "\" '"Daten\ExcelFiles\"
ChDrive "C:\" ' "D:\Daten\ExcelFiles\"
'Das Dialogfenster
Dateiname = "C:\Suchen_fernando_v9.xlsm"
' Dateiname = Application.GetOpenFilename _
("Micrsoft Excel-Dateien (*.xls*),*.xls*")
If Dir(Dateiname) <> "" Then Exit Sub
Application.ScreenUpdating = False
Workbooks.Open Filename:= _
Dateiname
Name = Right(Dateiname, InStr(1, StrReverse(Dateiname), "\") - 1)

'--------------------------------------------------------------------

With Sheets("Tabelle1")

' Suchen der Nummer
On Error Resume Next
zelle = Application.Match(CLng(TextBox55.Value), Worksheets("Tabelle1").Columns(1), 0)
If Not zelle = "" Then 'Exit Sub
'Worksheets("Tabelle1").Activate
a = 1
' Loeschen der Textboxen
For i = 1 To 54
Me("TextBox" & i) = ""
Next i
i = 1: f = 1
' Loeschen der Lapel´s
For i = 1 To 9
Me("Label" & i) = ""
Next i
i = 1: f = 1
' beschreiben der Label´s u. Textboxen
TextBox57 = Cells(zelle, 7).Value
TextBox56 = Cells(zelle, 5).Value
Do Until Cells(4, 11 + q).Value = ""
Me("Label" & a) = Cells(zelle, 11 + q).Value
Me("TextBox" & i) = Cells(zelle, 12 + q).Value
Me("TextBox" & 1 + i) = Cells(zelle, 15 + q).Value
Me("TextBox" & 2 + i) = Cells(zelle, 16 + q).Value

If Cells(zelle, 11 + q).Value = "" Then
' i = i - 2
' a = a - 1:
q = q + 7
Else
i = i + 3
a = a + 1
q = q + 7
End If
Loop
Else
MsgBox "Datensatz existiert nicht !?"
End If
'MsgBox i
End With
'---------------------------------------------------------------
' Schlissen
Windows(Nameb).Activate
Workbooks(Name).Close SaveChanges:=False
Else

MsgBox "Sie haben in ein o. einigen Feldern keine o. eine Falsche eingabe gemacht.", vbInformation

End If
Application.ScreenUpdating = True
End Sub


<div style="width:100px; text-align:center; color:black; font-style:italic; font-size:0.8em; font-family:Tahoma; background-color:#99FF99;margin-left:5px; margin-top:15px; padding:4px; border:3px double darkgreen;"><span title="Gruss" class="webdeveloper-display-div-order"></span>« Gruß Peter9 »</div>

Fernando123
12.07.2011, 14:29
dank dir
einfach genail
funktioniert einwandfrei:grins: