Wie der Makro soll bestimmte Zellen ignorieren, wie mache ich das

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Sorry, aber der Code ist ziemlich verwirrend. Ich tippe mal auf Makrorekorder. Einige der .Select kannst Du bestimmt schon selber 'rauslöschen (Eigentlich sollte man ganz OHNE .Select auskommen).
Mir ist nicht wirklich klar, WAS eigentlich gemacht werden soll.
Willst Du den Inhalt von Zelle C14 in beide Zellen, N6 und O6 kopieren, in denen schon etwas steht, außer es ist durchgestrichen oder ausgeblendet?
Beschreibe am besten mal "von Hand" WAS der Code erledigen soll. Optimal wären Screenshots oder eine hochgeladene Testdatei (da gibt es kostenlose Uploaddienste, google mal).
Im PRINZIP klappt so etwas wohl am ehesten mit einer Schleife in der Art:

Sub Kopieren()
Dim Zelle As Range
Dim Wert As Variant
Wert = ActiveSheet.Range("C14")
With Sheets("Tabelle2")
For Each Zelle In .Range("N6:O6")
If Zelle.EntireRow.Hidden = False _
And Zelle.EntireColumn.Hidden = False _
And Zelle.Font.Strikethrough = False Then
Zelle.Value = Wert
End If
Next Zelle
End With
End Sub

Woher ich das weiß:Berufserfahrung – IT-Administrator (i.R.)
Iamiam  06.07.2011, 19:14

es gibt noch die Möglichkeit über .range("N6:O6).Cells.specialcells(xlvisible) oder so ähnlich zu gehen. hab die genaue Bezeichnung grad nicht parat, aber specialcells bietet eine Reihe von Möglichkeiten!

0
Oubyi, UserMod Light  06.07.2011, 20:28
@Iamiam

Stimmt. Daran hatte ich auch schon gedacht - und es dann wieder vergessen (;o|.
Kann es sein, dass ich alt werde?
ALSO:
VERBESSERTE Version (Co-Autor: lamiam):

Sub Kopieren()
Dim Zelle As Range
Dim Wert As Variant
Wert = ActiveSheet.Range("C14")
With Sheets("Tabelle2")
For Each Zelle In .Range("N6:O6").SpecialCells(xlCellTypeVisible)
If Zelle.Font.Strikethrough = False Then _
Zelle.Value = Wert
Next Zelle
End With
End Sub

Danke fürs "auf die Sprünge helfen" (:o)

0
newb1986 
Fragesteller
 07.07.2011, 08:22
@Oubyi, UserMod Light

Hi Oubyi,

1000 Dank! die Formel funktioniert soweit bei mir und ist auch logisch nachzuvollziehen, deswegen verstehe ich mein folgendes Problem nicht.

Wenn die Zelle "C14" durchgestrichen oder ausgeblendet wird, wird es trotzdem in "Tabelle2" kopiert.

ich glaube der Hacken, ist hier:

If Zelle.Font.Strikethrough = False Then _

kann man da was modifizieren ?

Danke und Gruß Newb

0
newb1986 
Fragesteller
 07.07.2011, 08:32
@Oubyi, UserMod Light

Ich habe meinen Fehler gefunden :)

For Each Zelle In .Range("N6:O6").SpecialCells(xlCellTypeVisible)

If Zelle.Font.Strikethrough = False Then _

Zelle.Value = Wert

ich hatte den Wert nicht hingeschrieben!!

Merci :))

0

Du hast kein makro erstellt, du hast ein makro aufgezeichnet, das ist ein himmelweiter Unterschied. Wenn du im Radio ein ein Lied aufnimmst hast du es ja auch nicht automatisch komponiert. Und genau hier liegt das Problem: 1. Der Recorder zeichnet JEDEN klick auf, auch die unnötigen und er arbeitet wie Oubyi schon sagte ständig mit diesem unsäglichen Select, welches klasse dafür ist den Code unübersichtlich zu machen ,die Laufzeit zu erhöhen und als Fehlerquelle zu dienen. willst du die durchgestrichenen und ausgeblendeten aus dem Originalblatt weglassen oder willst du das auf der Kopie durchgestrichenen nicht überschrieben werden?