"We are back" « oc.at

kleines excel skript - leere zeile suchen

HitTheCow 25.06.2008 - 10:14 807 2
Posts

HitTheCow

it's been an honor.
Avatar
Registered: Mar 2002
Location: bielefeld
Posts: 6378
excel noob braucht wieder hilfe :/

ich hab zwei excel dateien, wobei von der einen daten in die andere geschrieben werden sollen.
das ist kein problem.
ich bräuchte aber ein kleines skript, das mir im zweiten file (dort wo die daten reingespielt werden) die nächste freie zeile sucht und dort die einträge dann reinspielt. wenn in einer zeile eine der 20 zellen belegt ist geht er in die nächste.
daten werden dann mit ...cells(zeilennr, 1) ...cells(zeilennr, 20) überspielt.
sprich ich bräucht als rückgabe die zeilennr.

hätt eine lösung zum problem gefunden, leider in alter excel sprache :(

Grunddaten_Speichern()
=ECHO(FALSCH)
=WENN(ISTLEER(Grunddaten!C1))
= NächsteFreieNummerErmitteln()
= DatenInÜbersichtsblattSpeichern(B88)
= FORMEL(B88;Grunddaten!C1)
= FORMEL(B88;Grunddaten!C5)
=SONST()
= DatenInÜbersichtsblattSpeichern(Grunddaten!C1)
=ENDE.WENN()
=RÜCKSPRUNG()

von der logik her komm ich noch mit, aber ich hab keinen plan das in vba umzusetzen...
Bearbeitet von HitTheCow am 25.06.2008, 11:33

Smoldi

rape diem
Avatar
Registered: Oct 2000
Location: Wien
Posts: 1371
das freie zeilen ermitteln müsste so gehen:

Code:
Function FreieZeile()
    Dim i As Integer
    i = 1
    While Worksheets("Tabelle1").Cells(i, 1).Value <> ""
        i = i + 1
    Wend
    FreieZelle = i
End Function

edit: ups ich glaub ich hab das falsch verstanden... kannst du mal dein skript posten?
Bearbeitet von Smoldi am 25.06.2008, 15:54

HitTheCow

it's been an honor.
Avatar
Registered: Mar 2002
Location: bielefeld
Posts: 6378
Code:
'identifier
wert1 = Art
wert2 = VkNr
wert3 = Jahr

check:
zelle1 = ActiveCell.FormulaR1C1
ActiveCell.Offset(0, 1).Activate
zelle2 = ActiveCell.FormulaR1C1
ActiveCell.Offset(0, 1).Activate
zelle3 = ActiveCell.FormulaR1C1
ActiveCell.Offset(0, -2).Activate

'existierende zeile suchen
weiter:
If wert1 = zelle1 Then
    If wert2 = zelle2 Then
        If wert3 = zelle3 Then
            zeilenr = ActiveCell.Row
            
            MsgBox ("Bereits vorhandene Einträge werden ersetzt")
    
            Sheets("Tabelle1").Cells(zeilenr, 1).Value = Art
            Sheets("Tabelle1").Cells(zeilenr, 2).Value = VkNr
            Sheets("Tabelle1").Cells(zeilenr, 3).Value = Jahr
            ...
                        GoTo ende
        End If
    End If
End If

'ansonsten leere zeile suchen
If zelle1 = "" And zelle2 = "" And zelle3 = "" Then
    zeilenr = ActiveCell.Row
    
    MsgBox ("Einträge werden neu angelegt")
    
        Sheets("Tabelle1").Cells(zeilenr, 1).Value = Art
        Sheets("Tabelle1").Cells(zeilenr, 2).Value = VkNr
        Sheets("Tabelle1").Cells(zeilenr, 3).Value = Jahr
        ...
    GoTo ende
End If

ActiveCell.Offset(1, 0).Activate

GoTo check

ende:
ich hoff so passts nun :)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz