Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1040to1044
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

n. gesperrte Zellen leeren

n. gesperrte Zellen leeren
26.01.2009 11:11:00
Andreas
Hi Leute,
Ich hab folgendes Problem:
In dem unten stehenden Code-Ausschnitt werden in Abhängigkeit von der Befüllung einer Zeile gewisse Spalten ausgeblendet. Nun müsste ich diesen Code erweitern, so dass alle nicht gesperrten Zellen in einer Spalte die ausgeblendet wird zuvor geleert werden. Kann mir da jemand weiterhelfen?
Gruss,
Andy
For Each chkCell In .Range("B9:I9")
If chkCell = "" Then
chkCell.EntireColumn.Hidden = True
Else
chkCell.EntireRow.Hidden = False
chkCell.EntireColumn.Hidden = False
End If
Next chkCell

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

Betreff
Datum
Anwender
Anzeige
AW: nicht gesperrte Zellen leeren
26.01.2009 11:58:49
Erich
Hallo Andreas,
meinst du das so?

Option Explicit
Sub Jekt()
Dim chkCell As Range, rngC As Range
With ActiveSheet
For Each chkCell In .Range("B9:I9")
With chkCell
If .Value = "" Then
.EntireColumn.Hidden = True
For Each rngC In .EntireColumn
If Not rngC.Locked Then rngC.ClearContents
Next rngC
Else
.EntireRow.Hidden = False
.EntireColumn.Hidden = False
End If
End With
Next chkCell
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: nicht gesperrte Zellen leeren
26.01.2009 12:16:17
Andreas
Hi Erich hab mal versucht deinen Vorschlag in meinen Code einzuarbeiten, leider bekomm ich eine Fehlermeldung. Leider reichen da meine Kenntnisse nicht ganz um zu erkennen woran es liegt. Hier der vollständige Code:

Sub Zeilen_Spalten_Gewichtung_ausblenden()
Dim wksChk As Worksheet
Dim i As Long, n As Long
Dim chkCell As Range
Dim rngC As Range
Dim wksArr(9) As String
wksArr(0) = "Gewichtung1"
wksArr(1) = "Gewichtung2"
wksArr(2) = "Gewichtung3"
wksArr(3) = "Gewichtung4"
wksArr(4) = "Gewichtung5"
wksArr(5) = "Gewichtung6"
wksArr(6) = "Gewichtung7"
wksArr(7) = "Gewichtung8"
wksArr(8) = "Gewichtung9"
For i = 0 To UBound(wksArr()) - 1
With Worksheets(wksArr(i))
'Spalte A
For n = 10 To 17
If .Cells(n, 1) = "" Then
.Rows(n).EntireRow.Hidden = True
Else
.Rows(n).EntireRow.Hidden = False
End If
Next n
'Spalten ausblenden
For Each chkCell In .Range("B9:I9")
If chkCell = "" Then
chkCell.EntireColumn.Hidden = True
For Each rngC In .EntireColumn
If Not rngC.Locked Then rngC.ClearContents
Next rngC
Else
chkCell.EntireRow.Hidden = False
chkCell.EntireColumn.Hidden = False
End If
Next chkCell
End With
Next i
End Sub


Anzeige
AW: Fehlermeldung ?
26.01.2009 12:43:00
Erich
Hi Andreas,
die Frage wäre vermutlich leichter zu beantworten, hättest du gleich noch ein paar mehr Infos gegeben:
In welcher Codezeile tritt der Fehler auf?
Welche Fehlernummer und welche Fehlerbeschreibung werden angezeigt?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Fehlermeldung ?
26.01.2009 12:49:00
Andreas
Hi,
Hier nochmal der Code mit Fehlermeldung:
Laufzeitfehler 438:
Objekt unterstützt diese Eigenschaft oder Methode nicht.

Sub Zeilen_Spalten_Gewichtung_ausblenden()
Dim wksChk As Worksheet
Dim i As Long, n As Long
Dim chkCell As Range
Dim rngC As Range
Dim wksArr(9) As String
wksArr(0) = "Gewichtung1"
wksArr(1) = "Gewichtung2"
wksArr(2) = "Gewichtung3"
wksArr(3) = "Gewichtung4"
wksArr(4) = "Gewichtung5"
wksArr(5) = "Gewichtung6"
wksArr(6) = "Gewichtung7"
wksArr(7) = "Gewichtung8"
wksArr(8) = "Gewichtung9"
For i = 0 To UBound(wksArr()) - 1
With Worksheets(wksArr(i))
'Spalte A
For n = 10 To 17
If .Cells(n, 1) = "" Then
.Rows(n).EntireRow.Hidden = True
Else
.Rows(n).EntireRow.Hidden = False
End If
Next n
'Spalten ausblenden
For Each chkCell In .Range("B9:I9")
If chkCell = "" Then
chkCell.EntireColumn.Hidden = True
For Each rngC In .EntireColumn     
If Not rngC.Locked Then rngC.ClearContents
Next rngC
Else
chkCell.EntireRow.Hidden = False
chkCell.EntireColumn.Hidden = False
End If
Next chkCell
End With
Next i
End Sub


Anzeige
AW: Fehler vielleicht gefunden
26.01.2009 12:47:00
Erich
Hi Andreas,
probier mal

Option Explicit
Sub Zeilen_Spalten_Gewichtung_ausblenden()
Dim i As Long, n As Long
Dim chkCell As Range, rngC As Range
For i = 1 To 9
With Worksheets("Gewichtung" & CStr(i))
'Spalte A
For n = 10 To 17
If .Cells(n, 1) = "" Then
.Rows(n).EntireRow.Hidden = True
Else
.Rows(n).EntireRow.Hidden = False
End If
Next n
'Spalten ausblenden
For Each chkCell In .Range("B9:I9")
If chkCell = "" Then
chkCell.EntireColumn.Hidden = True
For Each rngC In chkCell.EntireColumn        ' hier fehlte chkCell
If Not rngC.Locked Then rngC.ClearContents
Next rngC
Else
chkCell.EntireRow.Hidden = False
chkCell.EntireColumn.Hidden = False
End If
Next chkCell
End With
Next i
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Fehler weg,aber funktioniert nicht
26.01.2009 13:10:51
Andreas
Hi,
also der Fehler ist jetzt verschwunden, nur leider werden die Zellen nicht gelöscht. Also alles anderen (Zeilen und Spalten ausblenden) klappt, nur die Werte in den Zellen bleiben stehen. Woran könnte das liegen?
Gruss,
Andy
AW: funktioniert jetzt?
26.01.2009 13:34:43
Erich
Hi Andreas,
sorry, da hatte ich noch einen Fehler produziert: In der Zeile fehlte auch noch ein .Cells
Frage:
Sollen in einer auszublendenden Spalte ALLE Zellen (bei mir 65536,
du hast XL2007, da sind es noch ein paar mehr...) geprüft werden, ob sie gelockt sind?
Ich habe das im folgenden Code etwas eingeschränkt, auf den UsedRange:

Sub Zeilen_Spalten_Gewichtung_ausblenden()
Dim i As Long, n As Long
Dim chkCell As Range, rngC As Range
For i = 1 To 2
With Worksheets("Gewichtung" & CStr(i))
'Spalte A
For n = 10 To 17
.Rows(n).Hidden = (.Cells(n, 1) = "")
Next n
'Spalten ausblenden
For Each chkCell In .Range("B9:I9")
If chkCell = "" Then
chkCell.EntireColumn.Hidden = True
For Each rngC In Intersect(.UsedRange, chkCell.EntireColumn.Cells)
If Not rngC.Locked Then rngC.ClearContents
Next rngC
Else
chkCell.EntireColumn.Hidden = False
chkCell.EntireRow.Hidden = False
End If
Next chkCell
End With
Next i
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
geklärt!!
26.01.2009 13:40:08
Andreas
Vielen Dank jetzt funktioniert es wunderbar!!! Wünsche noch einen schönen Wochenstart!
Gruss,
Andy

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige