• Hallo Besucher!

    Du bist neu im Forum? Dann registriere dich hier, um Diskussionen beizutreten oder eigene Themen zu erstellen. Für die Registrierung ist es erforderlich, dass du einen Spielaccount bei Die Stämme hast.

    Andernfalls kannst du dich hier direkt einloggen.

    Falls du dein Passwort vergessen hast, kannst du hier ein neues Passwort anfordern.

Hilfe bei VBA

Morre

Gast
Grüße,

suche Hilfe in VBA, hab keine Ahnung davon, wenn jemand sich mit auskennt bitte helfen!

Das Makro soll dafür sorgen, dass man Text einträgt und das Skript schaut ob in der Zeile bereits Text steht, wenn ja soll der Text eine Zeile weiter unten erscheinen.

A1 -> Text JA?/NEIN? -> Wenn Ja dann Text in A2, wenn nein dann in A1, der Text(falls vorhanden) aus A1 soll nicht überschrieben werden!

A2 -> Text Ja?/Nein? -> Wenn Ja dann Text in A3, wenn nein dann in A2, der Text(falls vorhanden) aus A1 und A2 soll nicht überschrieben werden

Das ganze soll noch mit einer Infobox verbunden werden, aus der die Daten ausgelesen werden. Das ganze soll variable erweitert werden also A1 bis mind. A1000.


Hab mehere Varianten ausprobiert bisher bin ich soweit gekommen, dass wenn was in A1 steht, er es in A2 schreibt. Leider bekomme ich die Schleife nicht so hin, dass er auch weiter schiebt wenn in A2 was steht.

Sub Inputboxen()

Dim sTxt as String

sTxt = InputBox("Bitte ein Lebensmittelartikel eintragen", "Eingabefeld", "Ihr Eintrag", 1, 1)

Range("A3").Select

If ActiveCell = "" Then

Range("A3").Value = sTxt

ElseIf ActiveCell <> "" Then

Cells(ActiveCell.Row + 1, ActiveCell.Column).Activate

ActiveCell = sTxt

End If

End Sub



ander Ansatz:



For Each i In Range("A3:A100")
If ActiveCell = "" Then
Range("A3").Value = sTxt
ElseIf ActiveCell <> "" Then i = i + 1
End If
Next i
End Sub


Ist alles nicht erfolgsversprechend....





Vielen Dank im Vorraus



Gruß

Morre
 
Reaktionspunktzahl
4
Mmmm, so wie ich das verstehe suchst Du die erste freie Zeile in der Spalte.
http://www.office-loesung.de/ftopic50907_0_0_asc.php
und in einer alten Baustelle habe ich noch
Range("A3:A100").SpecialCells(xlCellTypeLastCell).Row + 1 = sTxt
gefunden. (nicht noch mal extra getestet!)

/e: hatte nun etwas mehr Zeit um zu schauen was Dein Problem war
Du hast beim ersten Ansatz eine Verzweigung (If Then) genutzt aber benötigst eine Schleife. Dadurch bist Du nicht über Deine beiden ersten Zellen hinaus gekommen.
Versuch mal
Code:
Sub Inputboxen()

    Dim sTxt As String
    Dim i As Integer
    
    sTxt = InputBox("Bitte ein Lebensmittelartikel eintragen", "Eingabefeld", "Ihr Eintrag", 1, 1)
    
    Range("A2").Select
    
    For i = 1 To 100
        Cells(ActiveCell.Row + 1, ActiveCell.Column).Activate
        If ActiveCell = "" Then
            ActiveCell.Value = sTxt
            Exit Sub
        End If
    Next i
    
End Sub
Beim 2. Ansatz ist i nicht nur ein einfacher Zähler sondern ein Feld.
Code:
Sub Inputboxen()

    Dim sTxt As String
    Dim i As Range
    
    sTxt = InputBox("Bitte ein Lebensmittelartikel eintragen", "Eingabefeld", "Ihr Eintrag", 1, 1)


    For Each i In Range("[COLOR=#000000]A3:A100[/COLOR]")
        If i.Value = "" Then
            i.Value = sTxt
            Exit Sub
        End If
    Next i
End Sub

Noch ein Tipp: vergib dem Bereich A3:A100 einen Namen zB. "Artikel" und sprich ihn im Makro darüber an -> Range("Artikel"). Das erleichtert Dir das Leben wenn Du später die Tabelle durch Einfügen von Spalten veränderst.
 
Zuletzt bearbeitet:

Morre

Gast
vielen dank bist super, ich probier es gleich aus :)

Vielen Lieben dank, es klappt wunderbar und macht genau das was es soll, dazu auch noch ne Erläuterung, damit hab ich gleich ne Lerneffekt.

Spielst du noch aktiv DS? Will mich mal eben ein wenig erkenntlich zeigen.

Hast vielleicht skype? Wenn ich nochmal fragen hab, scheinst dich ja auszukennen :)
 
Zuletzt bearbeitet:
Oben