Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1512to1516
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
VBA leere Zelle setzen
31.08.2016 12:25:50
Boory@gmx.net
Hallo Forum,
ich bin über ein Problem am am Verzweifeln, über das die VBA-Profis sicher nur den Kopf schütteln und lächeln werden.
Ich möchte folgenden VBA-Code verwenden:
Range("C3:C33").FormulaLocal = "=WENN(ZÄHLENWENN(Feiertage!A$1:A$13;A3);"F";"")"
Mein Problem:
Wenn ich bei der WENN-Funktion den "Dann-Wert" einer Zelle zuweise (also z.B. in M1 das F rein schreibe und hier eintrage
Range("C3:C33").FormulaLocal = "=WENN(ZÄHLENWENN(Feiertage!A$1:A$13;A3);$M$1;...)"
dann bekomme ich den Eintrag aus M1 auch angezeigt. Der "Sonst-Wert" muss aber zwingend leer sein, da ich mit einem weiteren Code-Snippet später die nächste freie Zelle in dieser Spalte abfragen muss. Daher kann ich dort auch nicht Null o.ä. eintragen, sondern muss die Zelle leer lassen.
Wie kann ich nun VBA davon überzeugen, zum einen DIREKT das "F" einzutragen und zum anderen "Sonst..." die Zelle leer zu lassen?
Wäre Euch für Eure Hilfe sehr dankbar!
Boory

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA leere Zelle setzen
31.08.2016 12:38:28
ChrisL
Hi
Leer = "" oder leer = keine Formel?
Generell mehr Gänsefüsse :)
Range("C3:C33").FormulaLocal = "=WENN(ZÄHLENWENN(Feiertage!A$1:A$13;A3);""F"";"""")"
cu
Chris
AW: VBA leere Zelle setzen
31.08.2016 13:12:14
Boory@gmx.net
Hallo ChrisL,
OK - MEIN Fehler... :)
Zelle soll GANZ leer sein, also auch keine Formel beinhalten, da sonst ja mein Abgreifen der "nächsten leeren Zelle" - später im Script - nicht greifen kann.
In sofern werden mir zwar mit dem Mehr an Gänsefüßchen die Zellen zwar leer angezeigt, wenn ich aber darauf klicke, sehe ich oben die Formel und das darf nicht sein.
Also GANZ LEER! :)
Anzeige
AW: VBA leere Zelle setzen
31.08.2016 13:22:39
ChrisL
Hi
Sub tt()
Dim rng As Range
Dim rng1 As Range, rng2 As Range
Const sMarker As String = "F"
Set rng1 = ActiveSheet.Range("A3:A33")
Set rng2 = Worksheets("Feiertage").Range("A1:A13")
For Each rng In rng1.Cells
If WorksheetFunction.CountIf(rng2, rng) > 0 Then
rng.Offset(0, 2) = sMarker
Else
rng.Offset(0, 2).ClearContents
End If
Next rng
End Sub

cu
Chris
AW: VBA leere Zelle setzen
31.08.2016 14:14:55
Boory@gmx.net
Hallo und vielen Dank, Chris,
ich habe das nun getestet. Funktioniert soweit alles so, wie es soll. Allerdings braucht die Ausführung extrem lange (ca 20 Sekunden), bis der prozess beendet ist. Woran könnte dies denn liegen?
Viele Grüße - Boory
Anzeige
AW: VBA leere Zelle setzen
31.08.2016 14:19:43
ChrisL
Hi
Vielleicht hast du viele Formeln?
Probiere mal...
Sub tt()
Dim rng As Range
Dim rng1 As Range, rng2 As Range
Const sMarker As String = "F"
Set rng1 = ActiveSheet.Range("A3:A33")
Set rng2 = Worksheets("Feiertage").Range("A1:A13")
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
For Each rng In rng1.Cells
If WorksheetFunction.CountIf(rng2, rng) > 0 Then
rng.Offset(0, 2) = sMarker
Else
rng.Offset(0, 2).ClearContents
End If
Next rng
Application.Calculation = xlAutomatic
End Sub

cu
Chris
AW: VBA leere Zelle setzen
31.08.2016 14:34:03
Boory@gmx.net
hmmm... Leider wird da nichts schneller...
Irgendwo scheint es da einen Loop zu geben, den ich nicht finde. Gut, man kann mit der Verzögerung leben, da diese nur ein Mal im Monat auftritt - nämlich beim Erstellen eines neuen Monats... :)
Daher nochmals vielen Dank - ich lass das jetzt erst mal so. :)
Viele Grüße - Boory
PS.: Da die Datei leider recht groß ist, kann ich diese hier nicht hochladen. Wenn Du sie Dir mal insgesamt anschauen möchtest, sag Bescheid, dann lade ich sie Dir auf meinen Webspace hoch...
Anzeige
AW: VBA leere Zelle setzen
31.08.2016 12:47:21
Daniel
Hi
Zellen die eine Formel enthalten, sind nie leer.
Auch das Formelergebnis "" ist ein Text.
ein einfachsten ist, wenn du nach Einfügen der Formel das Formelergebnis durch seinen Wert ersetzt und zwar so:
With Range("C3:C33")
.FormulaLocal = "=WENN(ZÄHLENWENN(Feiertage!A$1:A$13;A3);"F";"")"
.Formula = .Value
End With
damit verschwindet dann die Formel und nur das "F" bleibt in den entsprechdenden Zellen stehen
(dh das ganze ist fixiert, aber da sich die Feiertage nicht spontan ändern, sollte das kein Problem sein), und die Zellen, in denen das Formelergebnis "" stand, werden zu echten Leerzellen.
das übliche:
.copy
.PasteSpecial xlpastevalues
funktioniert hier nicht, weil so die Texte "" in den Zellen erhaltenbleiben und nicht in echte Leerzellen gewandelt werden.
Gruß Daniel
Anzeige
AW: VBA leere Zelle setzen
31.08.2016 13:16:53
Boory@gmx.net
Hallo Daniel,
den Sinnzusammenhang verstehe ich... Nur...
Leider wird mir sofort beim Einfügen Deines Codes die Zeile
.FormulaLocal = "=WENN(ZÄHLENWENN(Feiertage!A$1:A$13;A3);"F";"")"
in Rot angezeigt.
Hast Du eine Ahnung, woran das liegen könnte?
Gruss Boory
AW: VBA leere Zelle setzen
31.08.2016 14:06:03
Daniel
Hi
Da hast du einen Schreibfehler drin.
Wie Chris schon schrieb: "mehr Gänsefüsschen"
Anführungszeichen, die zur Formel gehören, müssen immer Doppelt eingegeben werden.
Daran kann dann der Interpreter beim Übersetzen des Codes erkennen, ob die Anführungszeichen zum Text gehören, oder diesen begrenzen.
Gruß Daniel
Anzeige

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige