Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

VBA: nächste Zeile

Betrifft: VBA: nächste Zeile von: Marsi
Geschrieben am: 23.08.2004 10:42:36

Hallo zusammen!

Ich komme nicht weiter.Ih habe folgenden VBA-Befehl:

Dim Zeile As Long
Zeile = Range("A65536").End(xlUp).Offset(1, 0).Row

Mit diesem Befehl springe ich automatisch in die nächste Zeile, wenn in der 1. Zeile schon was steht....
So weit so gut. Ich möchte nun aber, dass erst geprüft wird ob die Zelle in der Tabelle noch leer ist. Wenn sie noch leer ist soll dann dort hinein geschrieben werden. Ein Beispiel:

Textbox1 Vorname Spalte A
Textbox2 Nachname Spalte B

In Zelle A1 steht ein Tim, B1 ist leer. Nun soll Textbox 2 auch das Feld B1 füllen und nicht wie bei meinem Befehl oben B2.

Kommt rüber was ich will?


Danke schon mal im voraus....

Marsi

  


Betrifft: AW: VBA: nächste Zeile von: Marcl
Geschrieben am: 23.08.2004 11:47:38

Hi Marsi,

Sub d()
Range("A1").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Select
' weitere Bearbeitung eine Zelle tiefer
Else
Exit Sub
End If
' weitere Bearbeitung in gleicher Zelle

End Sub


Gruß

Marcl


  


Betrifft: AW: VBA: nächste Zeile von: Marsi
Geschrieben am: 23.08.2004 13:16:15

Hallo Marcl,

ich glaub das geht schon in die Richtung was ich brauche. Dein Script bezieht sich aber auf die Zelle A1, richtig? heißt, dass ich müsste das bei jeder textbox schreiben? irgendwie versteh ich die funktionsweise nicht richtig...kannste mir das mal erklären?

Danke


  


Betrifft: AW: VBA: nächste Zeile von: Marcl
Geschrieben am: 23.08.2004 13:23:51


Bezieht sich auf diese Nachricht:
Hi Marsi,


Sub d()
' Beginn in Zelle A1
Range("A1").Select
' wenn active Zelle nicht leer ist (<>"")
If ActiveCell <> "" Then
' dann von aktiver Zelle eine weiter nach unten
ActiveCell.Offset(1, 0).Select
' hier kann dann der Wert aus der Textbox eingetragen werden (eine Zeile tiefer)
....
' wenn die Zelle leer ist, dann
Else
' hier kann dann der Wert aus der Textbox eingetragen werden (gleiche Zeile)
....
' beendet die wenn, sonst Abfrage
End If
' beendet das Makro
End Sub


Wie man die Textboxeinträge in die Zellen bekommt, ist Dir bekannt?

Gruß

Marcl


  


Betrifft: AW: VBA: nächste Zeile von: Marsi
Geschrieben am: 23.08.2004 13:53:08

Hi,

also ich übertrage immer mit dem Range-Befehl.


Private Sub CommandButton1_Click()
Range("A1").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Select
Range("A1") = TextBox1.Text (diesen wert schreibt er immer nicht ins Tabellenblatt)
' weitere Bearbeitung eine Zelle tiefer
Else
Range("B1") = TextBox2.Text
Exit Sub
End If
' weitere Bearbeitung in gleicher Zelle

also ich versuch das mal zu verstehen....ich habe da echt ein brett vor dem kopf....

das script schaut in zelle a1 nach ob da schon was steht....steht da nix sollte es ja in zelle a1 was reinschreiben, aber irgendwie tuts das bei mir nicht....bei mir bleibt die zelle a1 immer leer.

ich bin echt am verzweifeln.


  


Betrifft: AW: VBA: nächste Zeile von: Marsi
Geschrieben am: 23.08.2004 14:21:27

so jetzt habe ich es geblickt!

Also dein VBA macht folgendes. es schaut nach, ob in zeile a1 was drin steht wenn nicht, dann schreibts was rein, wenn doch dann hüpfts ne zeile tiefer, aber ab da schreibts dann nix mehr rein. Weil es ja bloß in Zelle A1 nachsieht. aber es müsste dann ja in zelle b1 nachsehen, damit ne endlosschleife endsteht oder? auf jeden fall geht es dann in der zweiten zeile nicht mehr weiter....


  


Betrifft: AW: VBA: nächste Zeile von: Marcl
Geschrieben am: 23.08.2004 14:38:24

was ist TextBox1.txt?

ich versteh Dich nicht ganz. Geht es vielleicht um InputBox?

Private Sub CommandButton1_Click()
Name = InputBox("Vorname")
Range("A1").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Select
ActiveCell = Name
Else
ActiveCell = Name
End If

Nachname = InputBox("Nachnname")
Range("B1").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Select
ActiveCell = Nachname
Else
ActiveCell = Nachname
End If
End Sub



  


Betrifft: AW: VBA: nächste Zeile von: Marsi
Geschrieben am: 23.08.2004 15:13:49

Hallo,

ich habe mal ne beispiel datei hochgeladen. So soll es sein nur, dass in meinem Beispiel nur eine zeile gefüllt ist. Ich möchte, dass wenn auf der Position datum schon was steht und mann möchte noch einen Vornamen oder nachnamen hinzufügen dann soll das funktionieren. Sowie man aber ein neues datum eingibt soll dann alles komplett in die nächste zeile rutschen


https://www.herber.de/bbs/user/9970.xls


  


Betrifft: AW: VBA: nächste Zeile von: Marcl
Geschrieben am: 23.08.2004 15:46:48

Jaja, mein Brett vor dem Kopf war schon ein ganzer Zaun.

Hier der funktionierende Code für Deine UserForm

Private Sub CommandButton1_Click()
Datum = TextBox1.Value
' Suche Spalte A nach erster leerer Zelle
    Columns("A:A").Select
    Selection.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
' Active Zelle Datum eintragen
ActiveCell = Datum

Vorname = TextBox2.Text
' Suche Spalte B nach erster leerer Zelle
    Columns("B:B").Select
    Selection.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
' Active Zelle Vorname eintragen
ActiveCell = Vorname

Nachname = TextBox3.Text
' Suche Spalte C nach erster leerer Zelle
    Columns("C:C").Select
    Selection.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
' Active Zelle Nachname eintragen
ActiveCell = Nachname
Range("a1").Select
End Sub


Private Sub CommandButton2_Click()
Unload UserForm1
End Sub



Gruß

Marcl


  


Betrifft: AW: VBA: nächste Zeile von: Marsi
Geschrieben am: 23.08.2004 16:01:09

Also bei mir bringt Dein Script nen Fehler und zwar an der

Selection.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate

stelle....

ich muss zugeben. ich habe keinen blaßen was Du da geschrieben hast. Das ist mir nicht nur eine Nummer zu hoch. Wo kann ich das lernen? Gibt's da ein Buch was empfehlenswert wäre?

Danke nochmal für die Hilfe


  


Betrifft: AW: VBA: nächste Zeile von: Marcl
Geschrieben am: 23.08.2004 16:11:58

Falls sich unten stehenden Frage wegen der Punkte im Datumsformat darauf bezogen, in der Userform nur 6 Zahlen ein zu geben und dann macht Excel daraus Datum mit Punkten, dann nimm diesen Code:

Private Sub CommandButton1_Click()
Datum = TextBox1.Value
    Columns("A:A").Select
    Selection.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
ActiveCell = Datum
    ActiveCell.Offset(0, 3).Select
    ActiveCell.FormulaR1C1 = "=MID(RC[-3],1,2)"
   ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=MID(RC[-4],3,2)"
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=MID(RC[-5],5,2)"
  ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-3],""."",RC[-2],""."",RC[-1])"
    Selection.Copy
    ActiveCell.Offset(0, -6).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    ActiveCell.Offset(0, 3).ClearContents
    ActiveCell.Offset(0, 4).ClearContents
    ActiveCell.Offset(0, 5).ClearContents
    ActiveCell.Offset(0, 6).ClearContents

Vorname = TextBox2.Text
    Columns("B:B").Select
    Selection.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
ActiveCell = Vorname

Nachname = TextBox3.Text
    Columns("C:C").Select
    Selection.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
ActiveCell = Nachname
Range("a1").Select
End Sub


Private Sub CommandButton2_Click()
Unload UserForm1
End Sub


Gruß
Marcl


  


Betrifft: AW: VBA: nächste Zeile von: Marsi
Geschrieben am: 23.08.2004 17:16:45

also bei mir kommt immer der laufzeitfehler 91
Objektvariable oder WITH_blockvariable nicht festgelegt.....

was auch immer das heißen mag :o)


  


Betrifft: AW: VBA: nächste Zeile von: Marcl
Geschrieben am: 23.08.2004 19:53:57

Was für ne Version hast denn Du? Bei mir auf XP läuft der Kram super.


  


Betrifft: AW: VBA: nächste Zeile von: Marcl
Geschrieben am: 23.08.2004 19:57:17

hier Deine Datei zurück. Wenn´s jetzt nicht läuft, habe ich auch keine Ahnung mehr. Bei mir (XP) klappt das super.

Gruß

Marcl

https://www.herber.de/bbs/user/9990.xls


  


Betrifft: AW: VBA: nächste Zeile von: Marsi
Geschrieben am: 23.08.2004 20:23:59

bei deiner version macht er's!

He, tausend Dank Marcl!!!!!!!!!!


  


Betrifft: AW: VBA: nächste Zeile von: Marcl
Geschrieben am: 24.08.2004 06:19:34

Ich hab die Spalten D-G benötigt, um das Datum zu basteln. Die müssen ausgeblendet werden.

Gruß

Marcl


  


Betrifft: AW: VBA: nächste Zeile von: Marsi
Geschrieben am: 24.08.2004 07:56:29

Kann es sein, dass die ganze Programmierung Versionsabhängig ist??

Unter XP läuft es super. Nun wollte ich das ganze auf ner Excel 2000 Version zum laufen bringen auf Windows 2000 Rechner und er bringt mir nen Laufzeitfehler 448, benanntes Argument nicht gefunden.In dieser Zeile:

Selection.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate

also ich habe mir die ganze lange angeschaut und festgestellt, dass ich nichts kapiere was da drin steht.

Mit den Spalten, die ich freihalten muss, dass ist gar kein Problem, dass kann ich mir ja noch selbst anpassen wo ich die hinhaben will.


  


Betrifft: AW: VBA: nächste Zeile von: Marcl
Geschrieben am: 24.08.2004 09:26:51

aha, das kann sein,
und wenn Du nur

Selection.Find(What:="", After:=ActiveCell).Activate

schreibst? Habe ich aber nich tgetestet !

Gruß
Marcl


  


Betrifft: AW: VBA: nächste Zeile von: Marsi
Geschrieben am: 24.08.2004 16:16:22

Krass Du hast es drauf, jetzt klappts!

Danke viel Mal!

Marsi