Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1304to1308
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Textdatei lesen und in Exceldatei schreiben

Textdatei lesen und in Exceldatei schreiben
01.04.2013 16:19:39
Georg
Hallo zusammen und schönen Ostermontag,
habe ein Problem, wofür meine Kenntnisse leider nicht ausreichen.
Ich möchte Textdateien aus einem Verzeichnis automatisch in Exceldateien
eintragen, wobei der Exceldateiname dem Textdateinamen+Tegesdatum entspricht.
Die Textdatei ist in 11 Felder aufgeteilt, der Delemiter ist das Semikolon.
Als erste Zeile soll in den 11 Feldern eine Spaltenbeschreibung eingetragen
werden, danach in den folgenden Zeilen der jeweilige Dateninhalt.
Nun noch eine weitere Problematik:
Der Inhalt der Textdatei ist sequentiell eingetragen, ich möchte die Daten
in der Exceldatei aber sortiert nach dem Key (1.Feld in der Textdatei) eintragen.
Ist dieses überhaupt machbar? Über Eure Lösungsvorschläge würde ich mich freuen.
Habe eine Test-Textdatei angehängt.
Gruß
Georg
https://www.herber.de/bbs/user/84653.txt

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textdatei lesen und in Exceldatei schreiben
01.04.2013 18:52:35
Oberschlumpf
Hi Georg
Du hast Infos vergessen, oder für mich unklar, und zwar:
1. Wie heißen die 11 Überschriften (Spaltenbeschreibungen)
2. Hast du wirklich genau so viele Excel-Dateien wie txt-Dateien, oder meintest du, dass in einer einzigen Excel-Datei so viele Tabellenblätter drin sind, wie du txt-Dateien hast?
3. Du hast zwar eine txt-Datei gezeigt, zeig uns doch auch eine oder die Excel-Datei
4. Und dann zeig uns in der Excel-Datei, wie genau es mit den Daten aussehen soll, wäre es denn schon fertig
Also schreib in die Excel-Datei die Daten per Hand so rein, wie es nach deinem Wunsch am Ende aussehen soll
Bitte alle 4 Punkte beantworten.
Ciao
Thorsten

Anzeige
AW: Textdatei lesen und in Exceldatei schreiben
01.04.2013 19:34:37
Georg
Hallo Thorsten,
zu 1.: Exceldatei im Anhang
https://www.herber.de/bbs/user/84655.xls
zu 2.: Es können wirklich bis zu 15 Textdateien sein die in 15 einzelne Exceldateien geschrieben werden sollen.
zu 3.: Exceldatei im Anhang
zu 4.: Exceldatei im Anhang
Ich hoffe, es ist alles was Du benötigst.
Gruß
Georg

auch noch ne Frage
01.04.2013 19:57:20
Oberschlumpf
Hi Georg
+ Danke an Erich, seine Fragen sind auch wichtig; hatte ich gar nicht dran gedacht
Meine Frage:
du hattest geschrieben:
Nun noch eine weitere Problematik:
Der Inhalt der Textdatei ist sequentiell eingetragen, ich möchte die Daten
in der Exceldatei aber sortiert nach dem Key (1.Feld in der Textdatei) eintragen.

Wenn ich mir aber nun deine Excel-Bsp-Datei anschaue, sehe ich zum Inhalt in der txt-Datei keinen Unterschied.
Du hattest die txt-Datei einfach per ext. Datenimport in die Excel-Datei importiert.
In der Excel-Datei stehen die Daten in der gleichen Reihenfolge drin, wie in der txt-Datei.
Deine erwähnte weitere Problematik erkenne ich nicht.
Du hast in der Excel-Datei keinerlei Daten irgendwie anders sortiert als in der txt-Datei.
Was soll also wie sortiert werden?
Ciao
Thorsten

Anzeige
AW: auch noch ne Frage
01.04.2013 20:11:38
Georg
Hallo Thorsten,
habe wie Du richtig erkannt hast, die Daten über den Datenimport importiert,
So kannst Du natürlich keinen Unterschied von der Textdatei zur Exceldatei sehen.
Hier nun die geänderte Exceldatei.
https://www.herber.de/bbs/user/84658.xls
Gruß Georg

zwei weitere Fragen
01.04.2013 19:44:03
Erich
Hi Georg,
der Klarheit halber nummeriere ich nach Thorstens Fragen einfach weiter:
5.
Was genau bedeutet "automatisch" in
"Textdateien aus einem Verzeichnis automatisch in Exceldateien eintragen"?
Sollen in einem Rutsch alle Textdateien in einem vorgegebenen Verzeichnis eingelesen werden?
Oder soll ständig überwacht werden, ob im Verzeichnis eine Textdatei gespeichert wird,
um diese dann sofort (automatisch) einzulesen?
6.
Wenn die Daten aus einer Textdatei in eine Exceldatei eingetragen werden:
Gibt es diese Exceldatei vorher schon oder entsteht sie erst beim Einlesen?
Bei Letzterem: Was soll geschehen, wenn es bereits eine Exceldatei mit dem Namen gibt?
7.
Wie soll das Tabellenblatt heißen, in das die Daten geschrieben werden?
8.
Die Textdatei ist so aufgebaut, dass die Spalten sowohl durch den Delimiter ";" als auch durch die
festen Spaltenbreiten separiert werden können. Das ist eigentlich unnötig.
Bei fester Spaltenbreite brauchen zwischen den Spalten keine Delimiter zu stehen,
bei mit Delimiter gestrennten Spalten müssen die Daten in den Spalten nicht mit Leerzeichen
auf eine einheitliche Länge gebracht werden.
Nun - die Daten kommen vermutlich jetzt so.
Stellt sich die Frage: Sollen die evtl. störenden Leerzeichen eliminiert werden?
9.
Wie soll die Exceldatei heißen, wenn die Textdatei abc.txt heißt? Hier ein paar Möglichkeiten:
abc-20130401.xls
abc_2013-04-01.xls
abc-04012013.xls
abc-04-01-2013.xls
abc-1.April2013.xls
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: zwei weitere Fragen
01.04.2013 20:03:45
Georg
Hallo Erich,
hier die Antworten:
zu 5.: Ja, es sollen alle vorhandenen Dateien in einem Rutsch eingelesen werden.
Es braucht keine Überwachung.
zu 6.: Wäre ideal, wenn Datensätze eingefügt werden könnten, ansonsten Abfrage
Löschung der bestehenden Exceldatei.
zu 7.: Bewegungenxxxx (xxxx -- Nummern des KFZ-Kennzeichens)
zu 8.: Die Daten werden so geliefert. Leerzeichn brauchen nicht eliminiert werden.
zu 9.: abc_2013-04-01.xls wäre gut.
Hoffe, alle Fragen sind beantwortet.
Gruß aus Hamburg
Georg

erster Code
01.04.2013 20:44:22
Erich
Hi Georg,
der Code sollte schon die meisten deiner Anforderungen erfüllen.
Was klar noch fehlt:
Es wird immer eine neue Mappe erstellt, es gibt noch keine Prüfung,
ob schon eine Mappe da ist, in die die Daten geschrieben werden können.
Ach ja: Wenn die Zeilen in einer bestehenden Mappe ergänzt werden,
sollen dann alle Zeilen oder nur die neuen sortiert werden?

Option Explicit
Sub TxtLesen_Georg()
Dim strVz As String, strFile As String, strUeb As String, lngZ As Long
strVz = "F:\exc\www\tmp\georg\"              ' hier Verzeichnis eintragen
strFile = Dir(strVz & "*.txt")
Do While strFile  ""
Workbooks.OpenText Filename:=strVz & strFile, Origin:=xlMSDOS, _
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Semicolon:=True, _
FieldInfo:=Array(Array(1, 2), Array(2, 2), Array(3, 2), _
Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 1), _
Array(8, 1), Array(9, 2), Array(10, 4), Array(11, 1))
lngZ = Cells(Rows.Count, 1).End(xlUp).Row
Cells(1, 1).Sort Key1:=Cells(1, 1), Order1:=xlAscending, Header:=xlNo
Rows(1).Insert
Range("A1:K1") = Split("Key;Kennzeichen;EAN-Nummer;Seriennummer;Bezeichnung 1;" & _
"Bezeichnung 2;Entnahmemenge;Rückgabe/Verkauf;Vertragsnummer;Datum;Uhrzeit", ";")
With Rows(1)
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
Range("G1:H1").Orientation = 90
Columns.AutoFit
With ActiveWorkbook
lngZ = InStr(Cells(2, 2), " ")
If lngZ = 0 Then lngZ = 1
.Sheets(1).Name = "Bewegungen" & Trim(Mid(Cells(2, 2), lngZ))
.SaveAs strVz & Left(strFile, Len(strFile) - 4) & _
Format(Date, "_yyyy-mm-dd") & ".xls", FileFormat:=xlExcel8
.Close
End With
strFile = Dir
Loop
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: erster Code
01.04.2013 20:48:27
Georg
Hallo Erich,
vielen Dank für Deine schnelle Reaktion. Werde den Code gleich einmal ausprobieren.
Zu Deiner Frage: Es sollten dann schon alles komplett neu sortiert werden.
Gruß
Georg

AW: erster Code
01.04.2013 20:58:49
Georg
Hallo Erich,
bekomme beim Ausführen/Kompilieren die Fehlermeldung das die Variable xlExcel8
nicht definiert ist.
Gruß
Georg

AW: erster Code
02.04.2013 00:38:07
Erich
Hi Georg,
die Konstante xlExcel8 ist in deiner Version wohl noch nicht bekannt. Probier es bitte mal mit
FileFormat:=56
Wenn auch das nicht klappt, kannst du einfach ermitteln, was da bei dir stehen muss:
Du öffnest mit Excel eine Textdatei, startest die Markoaufzeichnung und sicherst die Datei dann
mit "Speichern unter". Danach kannst du die Markoaufzeichnung abschalten und dir die
SaveAs-Anweisung genau ansehen.
Hier eine neue Version:

Option Explicit
Sub TxtLesen_Georg()
Dim arrFiles(1 To 9999) As String, lngF As Long, ii As Long, lngA As Long
Dim strVz As String, strFile As String, strUeb As String, lngZ As Long
Dim wbkTxt As Workbook
strVz = "F:\exc\www\tmp\georg\"       ' hier Verzeichnis eintragen
arrFiles(1) = Dir(strVz & "*.txt")                 ' Liste der Textdateien
Do While arrFiles(lngF + 1)  ""
lngF = lngF + 1
arrFiles(lngF + 1) = Dir
Loop
' Abarbeiten der Liste
For ii = 1 To lngF
' Öffnen der Textdatei
Workbooks.OpenText Filename:=strVz & arrFiles(ii), Origin:=xlMSDOS, _
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Semicolon:=True, _
FieldInfo:=Array(Array(1, 2), Array(2, 2), Array(3, 2), _
Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 1), _
Array(8, 1), Array(9, 2), Array(10, 4), Array(11, 1))
Set wbkTxt = ActiveWorkbook
' Anzahl neue Zeilen
lngZ = Cells(Rows.Count, 1).End(xlUp).Row
' Name der Excelmappe
strFile = strVz & Left(arrFiles(ii), Len(arrFiles(ii)) - 4) & _
Format(Date, "_yyyy-mm-dd") & ".xls"
If Dir(strFile)  "" Then
' Excelmappe existiert bereits
Workbooks.Open strFile
' neue Zeilen kopieren
lngA = Cells(Rows.Count, 1).End(xlUp).Row
wbkTxt.Sheets(1).Rows("1:" & lngZ).Copy Cells(lngA + 1, 1)
' Sort (nach dem Einfügen)
Cells(1, 1).Sort Key1:=Cells(2, 1), Order1:=xlAscending, Header:=xlYes
Columns.AutoFit
ActiveWorkbook.Close True                    ' Sichere und schließe Excelmappe
wbkTxt.Close False                           ' Schließe Textdatei ohne Sichern
Else
' Excelmappe neu anlegen
Rows(1).Insert                               ' Überschriftzeile
Range("A1:K1") = Split("Key;Kennzeichen;EAN-Nummer;Seriennummer;Bezeichnung 1;" & _
"Bezeichnung 2;Entnahmemenge;Rückgabe/Verkauf;Vertragsnummer;Datum;Uhrzeit", ";")
With Rows(1)
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
Range("G1:H1").Orientation = 90
' Sort
Cells(1, 1).Sort Key1:=Cells(2, 1), Order1:=xlAscending, Header:=xlYes
Columns.AutoFit
With ActiveWorkbook
' Blattname
lngZ = InStr(Cells(2, 2), " ")
If lngZ = 0 Then lngZ = 1
.Sheets(1).Name = "Bewegungen" & Trim(Mid(Cells(2, 2), lngZ))
' neue Mappe sichern
.SaveAs strVz & Left(arrFiles(ii), Len(arrFiles(ii)) - 4) & _
Format(Date, "_yyyy-mm-dd") & ".xls", FileFormat:=56        ' xlExcel8
.Close False
End With
End If
Next ii
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: erster Code
02.04.2013 11:09:46
Georg
Hallo Erich,
funktioniert alles wie gewünscht. Musste nur FileFormat:=56 durch FileFormat:=xlNormal ersetzen.
Vielen Dank, Du hast mir sehr geholfen.
Habe noch eine Frage, ob die Möglichkeit besteht, die Tabellenblatt-Formatierung anzupassen und zwar:
Festlegung des Druckbereiches, Seite im Querformat, Anpassen der Seitengröße auf Blattgröße und Rahmen um den Druckbereich und die Zellen.
Dann wäre alles perfekt.
Nochmals vielen Dank für Deine schnelle Reaktion (und Nachtarbeit).
Grüße aus Hamburg
Georg

AW: erster Code
02.04.2013 11:19:00
Georg
Hallo Erich,
bei der Tabellenblatt-Formatierung wäre auch die Blattüberschrift auf den Folgeseiten
(Zeile 1) wünschenswert.
Gruß
Georg

Anzeige
AW: erster Code
02.04.2013 18:02:24
Georg
Hallo Erich,
nachdem ich mir die 'Kosmetik' der Exceldatei angesehen habe, hier doch noch 3 Fragen:
1.: Kann gleich bei der Übernahme das Feld 7 (Entnahme) auf Space gesetzt werden, wenn in
Feld 8 (Rückgabe) ein Wert steht?
2.: Besteht die Möglichkeit einen Datensatz nicht zu übernehmen, wenn ein Wert (z.B. 'Rueckgabe)
in Feld 9 steht?
3.: Kann nach der Übernahme die Spalte A ausgeblendet werden?
Über eine Info würde ich mich freuen.
Gruß aus Hamburg
Georg

dritter Code
02.04.2013 18:35:03
Erich
Hi Georg,
danke für deine Rückmeldung!
Zumindest teilweise hättest du dir den noch fehlenden Code per Makroaufzeichnung ermitteln können,
denke ich. Hier habe ich mal die Widerholungszeile 1, das Querformat und die Anpassung der Seitenbreite
auf die Blattbreite eingebaut.
Nichts getan habe ich zu
a) Warum willst du den Druckbereich festlegen? Soll er anders sein als der automatische? Wenn ja - wie?
b) Beim "Anpassen der Seitengröße auf Blattgröße" geht es dir wohl nur um die Breite.
Sonst wäre die Wiederholungszeile wohl sinnlos.
c) Statt "Rahmen um den Druckbereich und die Zellen" reicht es vielleicht aus, einfach die
Gitternetzlinien zu drucken.

Option Explicit
Sub TxtLesen_Georg()
Dim arrFiles(1 To 9999) As String, lngF As Long, ii As Long, lngA As Long
Dim strVz As String, strFile As String, strUeb As String, lngZ As Long
Dim wbkTxt As Workbook
strVz = "F:\exc\www\tmp\georg\"       ' hier Verzeichnis eintragen
arrFiles(1) = Dir(strVz & "*.txt")                 ' Liste der Textdateien
Do While arrFiles(lngF + 1)  ""
lngF = lngF + 1
arrFiles(lngF + 1) = Dir
Loop
' Abarbeiten der Liste
For ii = 1 To lngF
' Öffnen der Textdatei
Workbooks.OpenText Filename:=strVz & arrFiles(ii), Origin:=xlMSDOS, _
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Semicolon:=True, _
FieldInfo:=Array(Array(1, 2), Array(2, 2), Array(3, 2), _
Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 1), _
Array(8, 1), Array(9, 2), Array(10, 4), Array(11, 1))
Set wbkTxt = ActiveWorkbook
' Anzahl neue Zeilen
lngZ = Cells(Rows.Count, 1).End(xlUp).Row
' Name der Excelmappe
strFile = strVz & Left(arrFiles(ii), Len(arrFiles(ii)) - 4) & _
Format(Date, "_yyyy-mm-dd") & ".xls"
If Dir(strFile)  "" Then
' Excelmappe existiert bereits
Workbooks.Open strFile
' neue Zeilen kopieren
lngA = Cells(Rows.Count, 1).End(xlUp).Row
wbkTxt.Sheets(1).Rows("1:" & lngZ).Copy Cells(lngA + 1, 1)
' Sort (nach dem Einfügen)
Cells(1, 1).Sort Key1:=Cells(2, 1), Order1:=xlAscending, Header:=xlYes
Columns.AutoFit
ActiveWorkbook.Close True                    ' Sichere und schließe Excelmappe
wbkTxt.Close False                           ' Schließe Textdatei ohne Sichern
Else
' Excelmappe neu anlegen
Rows(1).Insert                               ' Überschriftzeile
Range("A1:K1") = Split("Key;Kennzeichen;EAN-Nummer;Seriennummer;Bezeichnung 1;" & _
"Bezeichnung 2;Entnahmemenge;Rückgabe/Verkauf;Vertragsnummer;Datum;Uhrzeit", ";")
With Rows(1)
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
Range("G1:H1").Orientation = 90
' Sort
Cells(1, 1).Sort Key1:=Cells(2, 1), Order1:=xlAscending, Header:=xlYes
Columns.AutoFit
' Seite einrichten
With ActiveSheet.PageSetup
.PrintTitleRows = "$1:$1"                 ' Wiederholungszeile 1
.PrintGridlines = True                    ' Rahmen (Gitternetz)
.Orientation = xlLandscape                ' Querformat
.Zoom = False                             ' kein Zoomfaktor
.FitToPagesWide = 1                       ' 1 Seite breit
.FitToPagesTall = False                   ' Höhe beliebig
End With
With ActiveWorkbook                          ' Blattname
lngZ = InStr(Cells(2, 2), " ")
If lngZ = 0 Then lngZ = 1
.Sheets(1).Name = "Bewegungen" & Trim(Mid(Cells(2, 2), lngZ))
' neue Mappe sichern
.SaveAs strVz & Left(arrFiles(ii), Len(arrFiles(ii)) - 4) & _
Format(Date, "_yyyy-mm-dd") & ".xls", FileFormat:=56        ' xlExcel8
.Close False
End With
End If
Next ii
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
vierter Code
02.04.2013 19:46:53
Erich
Hi Georg,
hier werden nun auch die Spalten 7 bis 9 ausgewertet und Spalte A ausgeblendet:

Option Explicit
Sub TxtLesen_Georg()
Dim arrFiles(1 To 9999) As String, lngF As Long, ii As Long, lngA As Long
Dim strVz As String, strFile As String, strUeb As String, lngZ As Long
Dim wbkTxt As Workbook
strVz = "F:\exc\www\tmp\georg\"       ' hier Verzeichnis eintragen
arrFiles(1) = Dir(strVz & "*.txt")                 ' Liste der Textdateien
Do While arrFiles(lngF + 1)  ""
lngF = lngF + 1
arrFiles(lngF + 1) = Dir
Loop
' Abarbeiten der Liste
For ii = 1 To lngF
' Öffnen der Textdatei
Workbooks.OpenText Filename:=strVz & arrFiles(ii), Origin:=xlMSDOS, _
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Semicolon:=True, _
FieldInfo:=Array(Array(1, 2), Array(2, 2), Array(3, 2), _
Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 1), _
Array(8, 1), Array(9, 2), Array(10, 4), Array(11, 1))
Set wbkTxt = ActiveWorkbook
' Anzahl neue Zeilen
lngZ = Cells(Rows.Count, 1).End(xlUp).Row
' Name der Excelmappe
strFile = strVz & Left(arrFiles(ii), Len(arrFiles(ii)) - 4) & _
Format(Date, "_yyyy-mm-dd") & ".xls"
If Dir(strFile)  "" Then
' Excelmappe existiert bereits
Workbooks.Open strFile
' neue Zeilen kopieren
lngA = Cells(Rows.Count, 1).End(xlUp).Row
wbkTxt.Sheets(1).Rows("1:" & lngZ).Copy Cells(lngA + 1, 1)
TxtLesen_Bereinige lngA + 1, lngA + lngZ     ' Bereinigungen
ActiveWorkbook.Close True                    ' Sichere und schließe Excelmappe
wbkTxt.Close False                           ' Schließe Textdatei ohne Sichern
Else
' Excelmappe neu anlegen
Rows(1).Insert                               ' Überschriftzeile
Range("A1:K1") = Split("Key;Kennzeichen;EAN-Nummer;Seriennummer;Bezeichnung 1;" & _
"Bezeichnung 2;Entnahmemenge;Rückgabe/Verkauf;Vertragsnummer;Datum;Uhrzeit", ";")
With Rows(1)
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
Range("G1:H1").Orientation = 90
TxtLesen_Bereinige 2, lngZ + 1               ' Bereinigungen
With ActiveSheet.PageSetup                   ' Seite einrichten
.PrintTitleRows = "$1:$1"                   ' Wiederholungszeile 1
.PrintGridlines = True                      ' Rahmen (Gitternetz)
.Orientation = xlLandscape                  ' Querformat
.Zoom = False                               ' kein Zoomfaktor
.FitToPagesWide = 1                         ' 1 Seite breit
.FitToPagesTall = False                     ' Höhe beliebig
End With
With ActiveWorkbook                          ' Blattname
lngZ = InStr(Cells(2, 2), " ")
If lngZ = 0 Then lngZ = 1
.Sheets(1).Name = "Bewegungen" & Trim(Mid(Cells(2, 2), lngZ))
' neue Mappe sichern
.SaveAs strVz & Left(arrFiles(ii), Len(arrFiles(ii)) - 4) & _
Format(Date, "_yyyy-mm-dd") & ".xls", FileFormat:=xlWorkbookNormal '-4143
.Close False
End With
End If
Next ii
End Sub
Private Sub TxtLesen_Bereinige(zVon As Long, zBis As Long)
Dim zz As Long, rngDel As Range, zDel As Long
' Zeilen löschen, wenn Spalte 9
For zz = zVon To zBis
If Trim(Cells(zz, 9))  "" Then
If rngDel Is Nothing Then
Set rngDel = Cells(zz, 9)
Else
Set rngDel = Union(rngDel, Cells(zz, 9))
End If
End If
Next zz
If Not rngDel Is Nothing Then
zDel = rngDel.Cells.Count           ' Anzahl zu löschende Zeilen
rngDel.EntireRow.Delete
End If
Set rngDel = Nothing
' Spalte 7 bedingt leeren
With Application
For zz = zVon To zBis - zDel
If .IsNumber(Cells(zz, 7)) And .IsNumber(Cells(zz, 8)) Then
If rngDel Is Nothing Then
Set rngDel = Cells(zz, 7)
Else
Set rngDel = Union(rngDel, Cells(zz, 7))
End If
End If
Next zz
End With
If Not rngDel Is Nothing Then rngDel.ClearContents
' Sort
Cells(1, 1).Sort Key1:=Cells(2, 1), Order1:=xlAscending, Header:=xlYes
Columns.AutoFit                        ' Spaltenbreite automatisch
Columns(1).Hidden = True               ' Spalte A ausblenden
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: vierter Code
02.04.2013 21:16:47
Georg
Hallo Erich,
vielen Dank für Deine 3. und 4.Code's.
Die Tabellenblatt-Formatierung funktioniert prima.
Nur bei der Kosmetik gibt es wohl ein Verständigungsproblem:
Es soll nur der Inhalt des Feldes 7 (Entnahme) gelöscht werden wenn im Feld 8 (Rückgabe)
ein Wert eingetragen ist. In Deiner vierten Version verschwindet der komplette Satz.
Die Vorgabe des Wertes möchte ich über den Inhalt einer Zelle (z.B. A1) steuern können.
Der Datensatz soll nur bei Vorgabe von einem bestimmten Wert gelöscht werden und nicht grundsätzlich, wenn ein Wert in Position 9 vorhanden ist.
Das Ausblenden der Spalte A funktioniert.
Ansonsten ist alles so, wie gewünscht.
Grüße aus Hamburg
Georg

Anzeige
AW: vierter Code
02.04.2013 23:33:24
Georg
Hallo Erich,
vergiss meine vorherige Nachricht. Es läuft alles richtig.
Musste nur die Abfrage auf Zelle 9 umändern und schon passte alles.
Also nochmals vielen Dank für Deine Hilfestellung.
Grüsse aus Hamburg
Georg

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige