nur eintragen wenn Zelle leer

Bild

Betrifft: nur eintragen wenn Zelle leer
von: junny
Geschrieben am: 10.12.2003 11:31:50

Hallo Leute,
ich hab ein makro bei dem Zellen in eine bestehende Liste eingefügt werden können.

Nun ist es so, dass in der bestehenden Liste Zellverweise gibt.
Um die Verweise nach einfügen von Zellen wieder richtig zu setzten, habe ich im makro folgenden code.
Problem: schon ausgefüllte Zellen sollen nicht überschrieben werden!!! wie bekomme ich das hin??
Gruss volker

'Artikelbezeichnung
Range("D5").Select
ActiveCell.FormulaR1C1 = _
"=IF(R[-1]C[18]=3,0,IF(R[-1]C[18]>0,CONCATENATE(R4C56),IF(R[-2]C[18]=2,CONCATENATE(R1C56),"""")))"
Selection.AutoFill Destination:=Range("D5:D319"), Type:=xlFillDefault

'Länge
Range("F5").Select
ActiveCell.FormulaR1C1 = _
"=IF(AND(R[-1]C>1,R[-1]C[16]=1),R[-1]C+20,IF(AND(R[-1]C>1,R[-1]C[16]=2),R[-1]C+20,IF(AND(R[-2]C[16]=2,R[-2]C>0),R[-2]C,IF(AND(R[-1]C[16]=0,R[-1]C>0),0,""""))))"
Selection.AutoFill Destination:=Range("F5:F319"), Type:=xlFillDefault

Bild


Betrifft: AW: nur eintragen wenn Zelle leer
von: WernerB.
Geschrieben am: 10.12.2003 12:17:03

Hallo Volker,

ich schlage diese Vorgehensweise vor (Artikelbezeichnung):

Sub Artikelbezeichnung()
Dim c As Range
Dim laR As Long
    Application.ScreenUpdating = False
    laR = Cells(Rows.Count, 1).End(xlUp).Row
    Range("D5").Copy
    For Each c In Range("D6:D319")
      If c.Value = "" Then
        c.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, _
          SkipBlanks:=False, Transpose:=False
      End If
    Next c
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
End Sub

Viel Erfolg wünscht
WernerB.

P.S.: Das Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter (siehe Forums-FAQ).


Bild


Betrifft: AW: nur eintragen wenn Zelle leer
von: junny
Geschrieben am: 10.12.2003 13:26:16

Hai Werner,
Range ("D5").Copy is nich, da in D5 nur so lange die Formel steht, bis Sie evtl. überschrieben wird (überschreiben kommt häufiger vor als automatisches ausfüllen) wenn in D5 nun bspw. "Türe" steht, setzte ich in alle leere Zellen ebenfalls "Türe".

Ich muss aber die richtige Formel (Formeln werden nach unten ausgefüllt und haben deswegen einen Bezug zur Zeilennummer)

Hast du noch einen Rat??
Lässt sich dein code mit meiner Formel paaren?


Gruss Volker


Bild


Betrifft: AW: nur eintragen wenn Zelle leer
von: WernerB.
Geschrieben am: 10.12.2003 13:33:26

Hallo Volker,

na dann schreiben wir doch vor dem Kopieren die Formel in die Zelle D5 ...

Sub Artikelbezeichnung()
Dim c As Range
Dim laR As Long
    Application.ScreenUpdating = False
    laR = Cells(Rows.Count, 1).End(xlUp).Row
    Range("D5").FormulaR1C1 = _
      "=IF(R[-1]C[18]=3,0,IF(R[-1]C[18]>0,CONCATENATE(R4C56),IF(R[-2]C[18]=2,CONCATENATE(R1C56),"""")))"
    Range("D5").Copy
    For Each c In Range("D6:D319")
      If c.Value = "" Then
        c.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, _
          SkipBlanks:=False, Transpose:=False
      End If
    Next c
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
End Sub

Gruß WernerB.


Bild


Betrifft: AW: nur eintragen wenn Zelle leer
von: junny
Geschrieben am: 10.12.2003 13:45:43

Hai Werner,
das sieht schon super aus!
Aber: D5 brauche ich als unbeschriebene Zelle, oder? Sprich: es lässt sich nicht so hintricksen, dass D5 die Ausgangszelle ist, und gleichzeitig schon beschrieben ist.(deswegen nicht mit der Formel überschrieben werden soll).

Wenn nicht machbar, setzte ich in meine Vorlage eine Zeile rein und mach diese entsprechend klein (oder blende diese aus)

Viele Grüsse volker


Bild


Betrifft: AW: nur eintragen wenn Zelle leer
von: WernerB.
Geschrieben am: 10.12.2003 14:06:50

Hallo Volker,

bisher bin ich davon ausgegangen, dass Du per Makro eine Formel in die Zelle D5 schreiben willst und diese anschließend über den Bereich D6:D319 in alle leeren Zellen ziehen/kopieren willst.
Deine Fragestellung ("Aber: D5 brauche ich als unbeschriebene Zelle, oder? Sprich: es lässt sich nicht so hintricksen, dass D5 die Ausgangszelle ist, und gleichzeitig schon beschrieben ist.(deswegen nicht mit der Formel überschrieben werden soll).") ist mir leider völlig unverständlich - ich kann nicht nachvollziehen, was Du überhaupt möchtest.

Vielleicht helfen Dir diese beiden Hinweise weiter:
1. Du kannst die Formel auch aus einer Zelle kopieren, wo sie garantiert immer drinsteht.
2. Du kannst die Formel auch zuerst in eine garantiert immer leere Zelle schreiben, und sie dann dort kopieren.


Gruß WernerB.


Bild


Betrifft: AW: nur eintragen wenn Zelle leer
von: junny
Geschrieben am: 10.12.2003 14:10:59

Werner DANKE! 2. das mache ich. (vielleicht habe ich mich auch etwas missverständlich ausgedrückt)

Aber so komm ich hin.

Viele Grüsse volker


Bild


Betrifft: AW: nur eintragen wenn Zelle leer
von: junny
Geschrieben am: 10.12.2003 14:41:20

Hai Werner, leider komm ich so doch nicht hin!

Ich muss das nochmals ausgiebig durchtesten, dann werd ich sehen wie ich weiter mache!!

Grüsse volker


Bild

Beiträge aus den Excel-Beispielen zum Thema " nur eintragen wenn Zelle leer"