Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen

FormulaLocal - Fehler | Herbers Excel-Forum


Betrifft: FormulaLocal - Fehler von: Heinz H
Geschrieben am: 17.11.2009 08:21:33

Guten morgen im Forum

Habe ein Makro Das mir zuerst Werte löscht. Das funktioniert.
Nur ab "With Range("C8:C38")" habe ich einen Fehler.

Ich möchte nach dem Löschen in C8:C38 die Formel einfügen lassen.

Könnte mir bitte jemand weiterhelfen ?

Gruß
Heinz

Option Explicit

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False

If MsgBox("Wollen sie die alle Daten löschen ?", vbQuestion + vbYesNo, _
    " Nachfrage Datenbank Aktualisierung !") = vbNo Then Exit Sub


ActiveSheet.Unprotect
Range("C8:C38,D8:D38,H8:H38,I8:I38,N8:N38,O8:O38").ClearContents


With Range("C8:C38")
.FormulaLocal = "=IF(WEEKDAY(RC[-2])=6,""PT/Woche"","""")"
ActiveSheet.Protect
Application.ScreenUpdating = True

End With
End Sub

  

Betrifft: FormulaLocal - Fehler --> FormualaR1C1 von: Björn B.
Geschrieben am: 17.11.2009 08:35:00

Hallo,

versuche es mal mit FormulaR1C1 statt FormulaLocal.
Das müsste klappen.

Gruß
Björn


  

Betrifft: AW: FormulaLocal - Fehler von: Oberschlumpf
Geschrieben am: 17.11.2009 08:35:35

Hi Heinz

der With/End With-Bereich

With Range("C8:C38")
    .FormulaR1C1 = "=IF(WEEKDAY(RC[-2])=6,""PT/Woche"","""")"
    ActiveSheet.Protect
    Application.ScreenUpdating = True
End With
funktioniert bei mir tadellos.

In alle Zellen (C8:C38) wird die Formel gesetzt - entsprechend angepasst - und der Blattschutz wird auch gesetzt.

Ciao
Thorsten


  

Betrifft: lach...danke Björn! von: Oberschlumpf
Geschrieben am: 17.11.2009 08:37:20

...hatte gar nicht gesehen, dass der Makrorecorder eben genau aus .FormulaLocal ein .FormulaR1C1 "machte" :-)

Ciao
Thorsten


  

Betrifft: AW: Danke an Björn B & Oberschlumpf von: Heinz H
Geschrieben am: 17.11.2009 08:40:56

Hallo Ihr beiden.

Ich bedanke mich recht herzlich,bei Euch beiden. !!!

Funkt.wie gewollt.

Noch einen schönen Tag
Gruß
Heinz


  

Betrifft: AW: Zusatzfrage von: Heinz H
Geschrieben am: 17.11.2009 08:52:18

Hallo

Wäre es eventuell möglich die Formel als Wert eintragen?

Also in C8:C38 nicht die Formel, sondern wenn Freitag, dann denn Wert "PT/Woche" einzutragen ?

Gruß Heinz


  

Betrifft: Zusatzantwort von: Björn B.
Geschrieben am: 17.11.2009 10:11:27

Hallo,

da gibt es 2 Möglichkeiten.
Entweder Du prüfst in einer Schleife Zelle für Zelle und schreibst bei Bedarf den Wert in den Zielbereich, oder Du machst es wie bisher und machst am Ende einmal Kopieren und Werte einfügen.
Je nachdem, wieviele Zeilen es sind, kann die Variante 1 lange dauern. bei deinen 30 macht es aber kaum nen Unterschied. Würde dann so aussehen:

Dim zeile As Integer
For zeile = 8 To 38
  If Weekday(Cells(zeile, 1).Value) = 6 Then Cells(zeile, 3).Value = "PT/Woche"
Next zeile
Gruß
Björn B.


  

Betrifft: AW: Zusatzantwort von: Heinz H
Geschrieben am: 17.11.2009 10:20:35

Hallo Björn

Genial !!!

Recht herzlichen Dank

Gruß
Heinz


  

Betrifft: kürzer.. von: Björn B.
Geschrieben am: 17.11.2009 08:39:06

.. geht das auch noch.
Da hier im With-Bereich nur 1 Zeile steht, kann man sich den ganz sparen.
Statt:

With Range("C8:C38")
    .FormulaR1C1 = "=IF(WEEKDAY(RC[-2])=6,""PT/Woche"","""")"
    ActiveSheet.Protect
    Application.ScreenUpdating = True
End With
wäre folgendes zu schreiben:
    Range("C8:C38").FormulaR1C1 = "=IF(WEEKDAY(RC[-2])=6,""PT/Woche"","""")"
    ActiveSheet.Protect
    Application.ScreenUpdating = True
Gruß
Björn


Beiträge aus den Excel-Beispielen zum Thema "FormulaLocal - Fehler"