Zum Inhalt springen

In nächste Zeile springen, wenn Zelle leer ist


Empfohlene Beiträge

Geschrieben

Hallo zusammen,

ich habe ein Makro geschrieben, das eine Exceltabelle in eine EDI*-Konforme Textdatei schreibt. Das Problem ist, das ich mit meinen bisherigen Schleifen jede Zeile+Zelle einzeln ansprechen muss. Ich geb mal einen kleinen Code-Ausschnitt:

For nRow = 4 To 4

      For nCol = 3 To 3


      LENTemp = Range("C4").Text


      Delimiter = 8 - Len(LENTemp)


            For i = 1 To Delimiter

                LENLenght = LENLenght + " "

            Next i


                strFileText = strFileText & avarWksData(nRow, nCol) & LENLenght


            'Var's leeren!

            LENTemp = ""

            Delimiter = ""

            LENLenght = ""


        Next

            strFileText = strFileText & avarWksData(nRow, nColsCnt)

    Next

Der Delimiter dient der Formatierung, dessen Wert leider nicht für jede Zelle Konstant bleibt. Ich brauche eine Schleife die folgendes tut :

- Zeile Zellenweise einliest

- Wenn nach der Zelle X eine leere Zelle folgt, in die nächste Zeile springen usw.

Ich hoffe das jemand ne Lösung parat hat.

MfG LordHexa

*EDI = EDI steht für Electronic Data Interchange und ist der Überbegriff für Industriestandards zum elektronischen Austausch von Geschäftsdokumenten.

Geschrieben

Sub neues()
Dim row As Integer
Dim col As Integer

row = 1
col = 1

Do While Tabelle1.Cells(row, col) <> ""

Do While Tabelle1.Cells(row, col) <> ""
'zeugs machen
col = col + 1 'nächste zelle
Loop
'wenn die letzte gefüllte zelle der
'vorigen zeile erreicht ist wieder zur 1. Zelle gehn
col = 1
row = row + 1
Loop
End Sub
[/PHP]

also so würde ich das machen... da läuft er jetzt solang durch bis die 1. Zelle einer neuen Zeile leer ist...

ist nicht getestet, aber sollte so ok sein ;)

Geschrieben
Naja, er liest das Feld A1 zwar aus, aber dann passiert nichts mehr.

Das einizge was ich umgestellt hab ist :

Do While ActiveWorkbook.Sheets("Tabelle1").Cells(row, col) <> ""

wird wohl daran liegen dass durch die umstellung alles zusammengebrochen ist... lt. meinem excel kann der ActiveWorkbook.Sheets("Tabelle1").Cells(row, col) net... warum willst du das denn mit dem activeworkbook machen? ein makro greift IMMER auf das Workbook zu in dem das makro gestartet wurde...

Geschrieben
Da mein Excel bei

Do While Tabelle1.Cells(row, col) <> ""

ein Object erfordert

dann heißt deine tabelle nicht tabelle1... hast du ne englische excel version?

naja auf jeden fall sieht man das links im Projekt explorer... z.b. Tabelle1(Test)

test ist der name den du vergeben hast und Tabelle1 in dem fall der Objektname... und der Objektname wird bei dir wohl anders sein...

Geschrieben

Ist mir klar, ganz so blöd bin nun auch auch nicht ;)

Ist ne Deutsche-Version. Ich werd mir mal nen anderen Lösungsweg suchen, habe gemerkt das es "so" auch sehr umständlich wird. Nichts desto trotz : Danke für die Hilfe!

Geschrieben

Also, so müsste es gehen.

Sub lesen()

Dim row As Long

Dim col As Long

row = 0

col = 0

'selektiert die Zelle A1

Range("A1").Select

Do While ActiveCell.Offset(row, col).Text <> ""

Do While ActiveCell.Offset(row, col).Text <> ""

'Code

'springt um eine Spalte rüber

col = col + 1

Loop

'springt eine Zeile tiefer zu der ersten Zelle

col = 0

row = row + 1

Loop

End Sub

Viele Grüße

Stefan_1

Geschrieben

Das hat leider nicht so ganz funktioniert, wie ich es mir erhofft habe. Daher bin ich jetzt auf einen anderen Lösungsweg umgestiegen, allerdings auch dort wieder auf ein Problem gestoßen. Ich möchte nun 2 Tabellenblätter, die verschiedene Spaltengrößen haben, mit einem Knopfdruck in 2 seperate .prn Files schreiben. Diese sollen nacheinander erstellt werden, mit Benutzerdefiniertem-Namen. Hätte da jemand nen Vorschlag ?

PRN-Format ist zwingend Notwendig, da somit die Formatierung erzeugt wird!

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...