# Nächste Zeile in einer Fixierten Spalte Auslesen



## Ka-may (17. August 2010)

Hallo zusammen, ich bekomme eine Sache nicht ganz zuende hin. Ein Ansatz habe ich schon, aber es klappt noch nicht so ganz. 
Also:

Ich habe Spalte A im excel fixiert. Darin sind unzählige Auftragsnummern. Die möchte ich einzeln
in der Datenmaske durch ein Button auslesen können. Undzwar so, dass bei jedem Klick, die nächste Auftr.-Nr erscheint.

Ich hab es so versucht:

Private Sub CommandButton1_Click()
Dim RowCount As Long
   With Worksheets("Daten")
      RowCount = .Cells(.Rows.Count, 1).End(xlUp).Row + 1

Me.TextBox6.Value = .Cells(RowCount, 1).Value


End With

End Sub 

MFG Ka-may


----------



## tombe (17. August 2010)

Ist der Button bzw. ist die Textbox in einer UserForm oder wo****

Wenn immer die nächste Auftragsnummer angezeigt werden soll, dann musst du auch irgendwo die zuletzt angezeigte Nummer/Zeile speichern.

Im Moment liest du nur den Wert der letzten Zeile + 1 (also einer leeren Zelle) aus.

Ich habe jetzt mal eine Form mit einem Button und einem Textfeld gebastelt. Hier der Code dazu:


```
Dim zeile

Private Sub CommandButton1_Click()
'prüfen ob schon eine Zeilennummer vorhanden ist
If zeile = 0 Then zeile = 1

With Worksheets(1)
    Me.TextBox1.Value = .Cells(zeile, 1).Value
    
    If zeile = .Cells(.Rows.Count, 1).End(xlUp).Row + 1 Then
        Exit Sub
    Else: zeile = zeile + 1
    End If

End With

End Sub
```

Die Variable zeile bekommt die letzte Zeilennummer (oder 1). Durch klicken auf den Button wird dann hochgezählt.
Ist jetzt nur auf die Schnelle aber es geht.


----------



## Ka-may (17. August 2010)

Hey, vielen Dank für die schnelle Antwort.
Also es funktioniert schon mal, dass er den nächsten wert ausgibt, aber nur einmal.
Wenn ich nochmal drauf klick, dann passiert nichts.

Muss ich da noch was hinzufügen****


----------



## tombe (18. August 2010)

Müsste bei dir eigentlich funktionieren. Zumindest dann, wenn du die Variable "zeile" im allgemeinen Teil deklariert hast. Ansonsten geht ihr Wert immer wieder verloren und es wird beim nächsten Klick wieder mit 1 angefangen.

Habe jetzt allerdings nochmal was geändert und deshalb gibt es jetzt 2 Buttons in der Form.
Der erste führt im Grunde die gleiche Funktion aus wie im Beispiel oben (Code gerigfügig geändert). Der zweite verwendet zum Zählen keine Variable sondern nimmt immer die aktive/markierte Zeile als nächsten Wert.

Gruß Thomas


----------



## Ka-may (18. August 2010)

Super!! Es funktioniert, Vielen Dank!Habe jetzt den 2ten Button übernommen. 

Könntest du mir noch sagen, wie ich in den Befehl schreibe, dass er sich auf die 2te tabelle dabei bezieht****Ich habe nämlich 2 Tabellen im excel. In der ersten (Hauptmenü) ist ein Button. Wenn ich darauf klicke, dann erscheint die Maske. In der zweiten tabelle werden die daten erfasst.

MFG Ka-may


----------



## tombe (18. August 2010)

Womit soll "er" sich auf die zweite Tabelle beziehen.

Sollen beim Klicken auf den Button Daten aus Tabelle2 ausgelesen und in Tabelle1 eingetragen werden oder wie?
Ansonsten stell doch mal deine Datei hier rein (ich habe Excel 2000) wenn es von den Daten her geht dann ist es vielleicht deutlicher.

Gruß Thomas


----------



## Ka-may (18. August 2010)

Ja ich glaub auch das ist dann leichter. 

Also wie du sehen kannst, sind in "Hauptmenü" 2 buttons.
Mit dem ersten kann ich maske öffnen.  Mit dem 2ten in die daten einsehen.

Wenn ich also die maske öffne, dann klappt das noch nicht mit dem klick auf den button (CommandButton1), weil der bezug zu tabelle2 ( Daten) fehlt.


Die Tabelle Auswertung ist unerheblich.

gruß


----------



## tombe (18. August 2010)

Womit arbeitest du, mit Excel 2003 **** Wenn ja, speichere die Datei bitte mal im Format für Excel 2000. Hab ja oben geschrieben das ich das hier habe und so kann ich die Datei von dir nicht öffnen.


----------



## Ka-may (18. August 2010)

Ja stimmt, überlesen.
Habs jetzt umgestellt.


----------



## tombe (18. August 2010)

Jetzt geht es wirklich.

Habe im Code ein bisschen was geändert. Du findest die Änderungen indem du nach "NEUE ZEILE" suchst. Das "A" steht hier jeweils für Anfang und das "E" steht für Ende, ist aber immer nur eine Zeile.


----------



## Ka-may (18. August 2010)

hey super es läuft einwandfrei******Genau so wollte ich das, danke!!

Ich hab da noch eine Frage: Gibt es auch die möglichkeit im vba etwas zu programmieren das funktioniert wie ein SVERWEIS****
Was ich nämlich noch vor hatte, war ein textfeld zu programmieren, dass wenn ich eine Auftr.-Nr rein schreibe, er mir in den anderen textfeldern die dazugehörigen werte ausließt, die unter dieser Auftragsnummer sind.
Quasi eine suchfunktion, damit ich im nachhinein werte verändern kann.

Hast du da eine idee****  

Gruß Ka-may


----------



## tombe (18. August 2010)

Machbar ist alles.
Willst du zum Bearbeiten nun ein weiteres Formular erstellen oder sollen die Änderungen in dem vorhandenen Formular gemacht werden?

Wozu ist das Listenfeld in dem die ganzen Auftragsnummern stehen? Hier könnte man doch einfach beim Change-Ereignis hinterlegen das er die entsprechenden Daten holt. Dann noch ein weiterer Button zum "Speichern" und fertig.


----------



## Ka-may (18. August 2010)

Das soll in dem vorhandenem Formular erstellt werden. 

Ja genau, ich wollte das erst auch mit dem listenfeld machen,dafür ist das eigentlich auch gedacht. 
Nur besser wäre es mit einem textfeld, da es sonst irgendwann sehr viel zu scrollen gäbe ;-) , wobei 
man das auch eingrenzen könnte...das wär nicht so wild.

Wie genau funktioniert das denn mit dem Change-Ereignis****


----------



## tombe (19. August 2010)

Hi Ka-may,

habe jetzt die Datei bzw. das Formular nochmal ein bisschen verändert.

Wenn jetzt im Listenfeld eine Auftragsnummer ausgewählt wird, werden die dazugehörigen Daten in die Textfelder eingertragen und können verändert werden. Die Auftragsnummer selber kann jedoch nicht mehr geändert werden!

Die Funktion des Buttons "Nummer suchen" habe ich so geändert das nicht durch die vorhandenen Auftragsnummer geblättert wird sondern das die letzte/höchste vorhandene Nummer ermittelt, um 1 erhöht und so als neue Auftragsnummer in die Liste eingetragen wird.
Dies setzt voraus das die in der Tabelle vorhandenen Angaben immer mit "A-" anfangen und dann eine Zahl kommt.
Werden hier jetzt die restlichen Felder beschrieben und auf Speichern geklickt, wird eine neuer Eintrag in der Tabelle "Daten" gemacht.

Hoffe mal es passt so wie du es haben willst.

Gruß Thomas


----------



## Ka-may (19. August 2010)

Man Wahnsinn, Vielen Dank! Du hast mir ca. 100 Jahre arbeit ersparrt. 
Genau so wollte ich das haben. 

Nochmal Danke! 

Gruß Ka-may


----------



## tombe (19. August 2010)

Freut mich wenn ich helfen konnte.

Aber wenn du mal wieder so etwas machen willst ein kleiner Tipp. Gib deinen Textfeldern, Listen, Buttons usw. eindeutigere Namen.
Auch wenn es teilweise mehr Schreibarbeit bedeutet, so hilft es doch unheimlich sich (vor allem später) im Code zurechtzufinden.
Wenn ein Feld z.B. Auftragsnummer, Kundennummer oder so heißt ist es viel einfacher den Code zu verstehen als wie wenn man Text1, Text2, ... liest.

Gruß Thomas


----------



## Ka-may (21. August 2010)

Hey, bei mir hat sich noch eine frage entwickelt.
undzwar, will ich noch ein kombi-feld einfügen das sich auf eine dritte tabelle bezieht und auf mehrere Spalten.
Dann habe ich erstmal versucht:

Private Sub Userform_Initialize()
    Application.ScreenUpdating = False

    Auftragserfassung1.lstSucheFZ.RowSource = "FZ-ansicht!A2:E2"
    Auftragserfassung1.lstAuftragsnummer.RowSource = "Aufträge!A2:A25"

End Sub

...und das geht nicht. Er sagt: laufzeitfehler 380. Das das mit dem rowsource nicht geht. 

Kannst du mir helfen?
Gruß Ka-may


----------



## Ka-may (22. August 2010)

Hey hab nochmal eine frage:
Wie mache ich, dass alles was ich in Textfeld2 eingebe, in der zugeordneten Zelle im Excel, als Datum angezeigt wird?

Gruß Ka-may


----------



## Ka-may (22. August 2010)

Ach und die frage bezüglich des kombifeldes hat sich erledigt. Also nur die frage vom 22.08.2010 ist aktuell.

Gruß


----------

