Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Leere Zelle überspringen
#1
Hallo liebe Profis,
ich brauche Hilfe bei meinem kleinen Makro, welches einwandfrei funktioniert aber doch noch etwas optimiert werden soll.

An der Stelle (Siehe Ausschnitt) werden nach und nach Zellen ausgewählt, welche in eine Textdatei eingetragen werden. Jedoch beträgt die Länge des Programms nicht immer 100.500 Zellen. Es könnten auch nur 95.000 sein. Am Ende( bei 100.500) befindet sich allerdings noch ein Text, welcher auch in die TXT- Datei übertragen werden soll. Demnach sollen leere Zellen, wenn sich soetwas einfach in den Code einfügen lässt, ignoriert werden, bis wieder Text in einer Zelle steht. Ist soetwas über einen einfach IF- ELSE- Befehl möglich? Angel Bis jetzt übernimmt er auch die leere Zellen in die Text- Datei. Das mach die spätere Datei etwas zu groß :20:  
Code:
For zz = 50013 To 100500                          
            Print #nr, .Cells(zz, 1).Text                
         Next zz  

Hier nochmal der ganze Code
Code:
Sub TxtAusCode()                            
                                           
Application.ScreenUpdating = False          
Application.Calculation = xlCalculationManual  
      Dim strD As String, strN, nr As Integer, zz As Long  
Sheets("Verarbeitung").Select                              
Range("V21:V50002").Select                                
Selection.Copy                                            
Range("A50484").Select                                    
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
       :=False, Transpose:=False                          
strD = CurDir()                                            
      strN = Application.GetSaveAsFilename(InitialFileName:="F:\exc\w-w-w\tmp\xxx.txt", _
         FileFilter:="Textdateien (*.txt), *.txt", Title:="")  
      If VarType(strN) = vbBoolean Then Exit Sub          
      nr = FreeFile(1)                                    
      Open strN For Output As #nr
      With Sheets("Verarbeitung")                          
         For zz = 50013 To 100500                          
            Print #nr, .Cells(zz, 1).Text                
         Next zz                                        
      End With
      Close nr
      ChDrive strD
      ChDir strD
Sheets("Arbeitsblatt").Select                              
Application.ScreenUpdating = True                          
Application.Calculation = xlCalculationAutomatic            
Call Calculate
   End Sub                                                



Ich bedanke mich für eure Mühen  :19:
Antworten Top
#2
Hallo,

m.E. gibt es zwei Möglichkeiten:

die letzte zu kopierende Zeile abfragen:

lr = cells(rows.count, "A").end(xlup).row

oder

eine if-Abfrage vorschalten:

Code:
if .cells(zz, 1) <> "" then Print #nr, .Cells(zz, 1).Text

mfg
Antworten Top
#3
Hi Fennek,
danke für deine schnelle Antwort. In diesem Fall wird es der If- Befehl sein, der mit sehr großer wahrscheinlichkeit für mich in Frage kommt.

Ich habe deinen Vorschlag in das Makro eingefügt und bekomme einen Laufzeitfehlertyp 13 angezeigt. Beim debuggen ist der Bereich von "If" bis "then" gelb markiert. Muss ich noch etwas anpassen?
Code:
For zz = 50013 To 100500                          
           If Cells(zz, 1) <> "" Then Print #nr, .Cells(zz, 1).Text                  
         Next zz
EDIT:
ich habe bemerkt, dass er mir die Datei bis zu einer Zelle mit dem Inhalt #NV ausgibt. Das könnte gegebenenfalls der Grund sein. Ich werde das #NV mal schnell eliminieren und nochmals hier editieren!
Antworten Top
#4
Hat funktioniert! Vielen Dank für deine Hilfe Fennek Exclamation Exclamation :19:
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste