Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
740to744
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
740to744
740to744
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

zelleninhalte löschen funktioniert nicht

zelleninhalte löschen funktioniert nicht
05.03.2006 21:56:16
selo
hallo
stehe wiedermal vor einem problem
habe folgenden code

Sub selo_berechnung1()
Worksheets("gesamtplanung").Activate
With ActiveSheet
Dim loLetzte As Long
Dim loI As Long
Dim ZeileEnde, SpalteEnde, y, x, zelle
loLetzte = IIf(IsEmpty(Cells(Rows.Count, 2)), Cells(Rows.Count, 2).End(xlUp).Row, Rows.Count)
For loI = 2 To loLetzte
ZeileEnde = loI  'letzte Zeile = loI
SpalteEnde = 15  'letzte Spalte = o
For y = 14 To SpalteEnde 'Bereich ab Spalte n bis o
For x = 2 To ZeileEnde  'Bereich ab Zeile 2 bis letzte
Cells(x, y).Select
zelle = ActiveCell.Formula
If Left(zelle, 1) <> "=" Then Cells(x, y).ClearContents
Next x
Next y
Cells(loI, 14).FormulaLocal = "hier erfolgt ein berechnungsschritt"
Cells(loI, 14).NumberFormat = "General"
Range(Cells(loI, 14), Cells(loI, 15)).HorizontalAlignment = xlCenter
Next loI
Range(Cells(loI, 14), Cells(loI, 15)).Font.ColorIndex = 3
End With
Worksheets("tabelle3").Activate
End Sub

jedoch funktioniert es nicht das die zelleninhalte von spalte n und o ab zeile 2 vor der berechnung gelöscht werden.
was könnte der grund sein?

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: zelleninhalte löschen funktioniert nicht
05.03.2006 23:07:32
Beate
Hallo,
teste mal, ob dass das Gewünschte macht:
Sub Zellen_in_N_und_O_loeschen_und_formatieren_wenn_M_leer()
    'Voraussetzung: Liste beginnt in Zeile 1 (Überschriften)
    Range("M1").AutoFilter Field:=13, Criteria1:="="
    Range("2:" & [M2].CurrentRegion.Rows.Count).Columns("N:O").SpecialCells(xlCellTypeVisible).ClearContents
    Range("2:" & [M2].CurrentRegion.Rows.Count).Columns("N:N").SpecialCells(xlCellTypeVisible).FormulaLocal = "hier erfolgt ein Berechnungsschritt"
    Range("2:" & [M2].CurrentRegion.Rows.Count).Columns("N:N").SpecialCells(xlCellTypeVisible).NumberFormat = "General"
    Range("2:" & [M2].CurrentRegion.Rows.Count).Columns("N:O").SpecialCells(xlCellTypeVisible).HorizontalAlignment = xlCenter
    Range("2:" & [M2].CurrentRegion.Rows.Count).Columns("N:O").SpecialCells(xlCellTypeVisible).Font.ColorIndex = 3
    [M1].AutoFilter
End Sub



Gruß, Beate
Anzeige
AW: zelleninhalte löschen funktioniert nicht
05.03.2006 23:21:01
Luschi
Hallo Beate,
Du kannst wohl auch nicht schlafen?
Gruß von Luschi
aus klein-Paris
AW: zelleninhalte löschen funktioniert nicht
05.03.2006 23:18:16
Luschi
Hallo Selo,
Bezüge auf Zellen sollte man über definierte Objekte realisieren und Cells nur verwenden, wenn auch der Tabellenname explizit angegeben wird. Ansonsten kann es passieren, daß Excel in 1 ganz anderen Tabelle die Werte sucht oder ändert.
Ich bin mir sicher daß in der folgende Zeile die Cells-Anweisung auf eine andere Tabelle zeigt:
loLetzte = IIf(IsEmpty(Cells(Rows.Count, 2)), Cells(Rows.Count, 2).End(xlUp).Row, Rows.Count).
Prüfen kann man das mit: MsgBox Cells(Rows.Count, 2).Patent.Name
Es würde mich nicht wundern, wenn da ein anderer Tabellen-Name herauskommt als
"gesamtplanung".
Da hat loLetzte sicher den Wert 1 und will die Schleife durchsuchen von "N1:O2".
Meine Routine sieht so aus:
Sub selo_berechnung1()
Dim loLetzte As Long
Dim zelle
Dim ws As Worksheet, rg1 As Range, rg2 As Range
'best. Systemeinstellungen deaktivieren
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
'Tabelle festlegen
Set ws = ThisWorkbook.Worksheets("gesamtplanung")
loLetzte = IIf(IsEmpty(ws.Cells(Rows.Count, 2)), ws.Cells(Rows.Count, 2).End(xlUp).Row, ws.Rows.Count)
'Bereich festlegen
Set rg1 = ws.Range("N2:O" & loLetzte)
'jede Zelle im Bereich durchlaufen
For Each rg2 In rg1
zelle = rg2.Formula
If Left(zelle, 1) <> "=" Then
rg2.ClearContents
End If
Next rg2
'Formtierungen festlegen
rg1.HorizontalAlignment = xlCenter
rg1.Font.ColorIndex = 3
'nur Spalte N formatieren
Set rg1 = ws.Range("N2:N" & loLetzte)
rg1.FormulaLocal = "hier erfolgt ein berechnungsschritt"
rg1.NumberFormat = "General"
Set rg1 = Nothing
Set rg2 = Nothing
Set ws = Nothing
ThisWorkbook.Worksheets("tabelle3").Activate
'Systemeinstellungen wieder einschalten
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: zelleninhalte löschen funktioniert nicht
05.03.2006 23:57:52
selo
hallo Luschi
danke dir und beate
jetzt habe ich ein problem den berechnungschritt
=WENN(Arbeitstage!$J$7=WAHR;fünftage(c" & loI & ";d" & loI & ";Arbeitstage!Feiertage);(WENN(Arbeitstage!$K$7=WAHR;atc(c" & loI & ";d" & loI & ";Arbeitstage!Feiertageso);o" & loI & ")))
einzufügen.
ich bin nicht gerade der superkenner in vba hatte schon schwierigkeiten den anderen code zusammenzustellen.
weißt du hier auch einen rat wie ich diesen berechnungschritt nun einfügen kann in deinen code.
sorry das ich es vorher nicht eingesetzt hatte dachre da kommt nur eine zeile rein in meinen code der die spalten löscht.
gruß selo
Anzeige
AW: zelleninhalte löschen funktioniert nicht
06.03.2006 08:53:01
Luschi
Hallo Selo,
stelle doch 1 kleine Demo-Datei auf dem Herber-Server bereit und veröffentliche
hier die Download-Adresse.
Dann kann ich Dir weiterhelfen.
Gruß von Luschi
aus klein-Paris
AW: hier die datei
06.03.2006 11:12:22
selo
hallo luschi
habe die datei mal hochgeladen
es handelt sich hierbei um eine extrem abgespeckte version.
https://www.herber.de/bbs/user/31650.zip
danke dir
selo
AW: hier die datei
06.03.2006 13:09:17
Luschi
Hallo selo,
leider kann ich mit der Datei nicht viel anfangen, weil alle Namensbezüge ungültig sind. Du hast sicher unter Excel den Befehl "Datei - Speichern unter" ausgeführt.
Das ist Gift für die neue xls-Datei, da alle vergebenen Namen zu externen Bezügen werden
und der Range-Bereich nur noch #BEZUG! anzeigt.
Deshalb erstelle ich Kopien von xls-Dateien nur noch auf Betriebssystem-Ebene im Explorer (xls-Datei ist geschlossen). Dann öffne ich diese Kopie mit Excel und arbeite weiter.
Der o.g. Befehl taugt also nicht für Sicherungskopien jeglicher Art, wenn Range-Bereiche mit Namen versehen sind. Die Namensvergabe ist eine gute Sache (in meinen Programmen verwende ich hunderte von Namen in 1 Mappe), aber dieser Schei$$-Befehl kann damit auch in Office2003 (Excel 11) nicht umgehen und zerstört die Namensbezüge und die Datei ist wertlos.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: hier die datei
06.03.2006 15:14:54
selo
hallo
mein problem ist
das die tabelle dynamisc ist un mal länger mal kürzer ist.
beim ablauf der rechnung dauert es extrem lange wenn die spalten n und o nicht vorher gelöscht sind.
das problem mit dem code

Sub Löscht_zelleninhalt()
Dim ZeileEnde, SpalteEnde, y, x, zelle
ZeileEnde = 10  'letzte Zeile = 10
SpalteEnde = 15  'letzte Spalte = o
For y = 14 To SpalteEnde 'Bereich ab Spalte n bis o
For x = 2 To ZeileEnde  'Bereich ab Zeile 1 bis hier müßte angepaßt sein
Cells(x, y).Select
zelle = ActiveCell.Formula
If Left(zelle, 1) <> "" Then Cells(x, y).ClearContents
Next x
Next y
End Sub

ist das ich zeileende=
vorgeben muß jedoch ist die zeilenanzahl ja immer anders.
und deshalb wollte ich diese in

Sub selo_berechnung2()
'10 ist ok
'berechnung der formel für die diagramme
Worksheets("gesamtplanung").Activate
With ActiveSheet
Dim loLetzte As Long
Dim loI As Long
loLetzte = IIf(IsEmpty(Cells(Rows.Count, 2)), Cells(Rows.Count, 2).End(xlUp).Row, Rows.Count)
For loI = 2 To loLetzte
Cells(loI, 15).FormulaLocal = "=g" & loI & "+1"
Cells(loI, 14).FormulaLocal = "=WENN(Arbeitstage!$J$7=WAHR;fünftage(c" & loI & ";d" & loI & ";Arbeitstage!Feiertage);(WENN(Arbeitstage!$K$7=WAHR;atc(c" & loI & ";d" & loI & ";Arbeitstage!Feiertageso);o" & loI & ")))"
Cells(loI, 14).NumberFormat = "General"
Range(Cells(loI, 14), Cells(loI, 15)).HorizontalAlignment = xlCenter
Next loI
Range(Cells(loI, 14), Cells(loI, 15)).Font.ColorIndex = 3
End With
'Worksheets("tabelle3").Activate
End 

Sub
einfügen da hier ja die schleife vorhanden ist.
gruß
selo

Anzeige

328 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige