Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Nicht leere Zellen leere Zellen umwandeln
13.03.2017 09:44:04
Marcel
Hallo zusammen,
ich habe u.s. Makro, das vermeintlich leere Zellen in tatsächlich leere Zellen umwandeln soll Es kann:
1. Lässt mich den Wertebereich auswählen, in dem das Makro "wirken" soll
2. In diesem Bereich sollen Formeln in Werte umgewandelt werden und gleichzeitig vermeintliche Leerzellen ("" - Beispielsweise aus (=wennfehler)) in tatsächliche Leerzellen umgewandelt werden
3. Zellen, die den Wert 0 (als Ergebnis eines SVERWEIS-Funktion) sollen leere Zellen werden
4. Eine Meldung i.S. von "Makro erfolgreich" bzw. "Makro nicht erfolgreich" soll am Ende erscheinen.
Sub setValue()
Dim selArea, cell As Range
On Error Resume Next
Set selArea = Application.InputBox(Prompt:="Auswahl", Title:="Bitte wählen sie einen  _
Bereich aus", Type:=8)
If IsEmpty(selArea) Then Exit Sub
On Error GoTo errorblabla
For Each cell In selArea
If cell.HasFormula Then
If Len(Replace(cell.Value, 0, "")) = 0 Then
cell = ""
Else
cell.Value = cell.Value
End If
End If
Next
MsgBox "Makro erfolgreich"
Exit Sub
errorblabla:
MsgBox "Makro nicht erfolgreich"
End Sub
Problem: Es macht es nicht. Also die Umwandlung erfolgt nicht (s. angefügte Excel).
https://www.herber.de/bbs/user/112141.xlsm
Kann hier mal bitte jemand schauen, ob das Makro korrekt ist oder wo vielleicht mein Fehler liegt?
Danke und Grüße

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nicht leere Zellen leere Zellen umwandeln
13.03.2017 10:02:16
Daniel
HI
also bei mir funktioniert es.
allerdings ist das was du da machst, sehr umständlich.
um Formeln in Festwerte zu wandeln, reicht im Prinzip
SelArea.Formula = SelArea.Value

dabei wird das Formelergebnis "" in eine echte Leerzelle gewandelt.
allerdings darf dass immer nur auf einen lückenlosen, Rechteckigen Zellbereich angewendet werden.
wenn du die Zellen mit gedrückter STRG-Taste auswählst, müsste man etwas anders programmieren.
wenn dann noch der Zellinhhalt 0 gelöscht werden soll:
SelArea.Replace What:="0", Replacement:="", Lookat:=xlwhole
Gruß Daniel
Anzeige
AW: Nicht leere Zellen leere Zellen umwandeln
13.03.2017 10:38:45
Marcel
Danke für eure Antworten!
Ich habe in das Makro zweite Makro von Franz versucht die Abfrage Bereichsauswahl und die "erfolgreich" Rückmeldung einzubauen. Scheint zu funktionieren - kenne mich aber null aus und bin mir sicher, ob ich es richtig gemacht habe und nicht evtl. zu viel gelöscht habe:
Franz´ Makro:
Sub ClearEmptyCells_in_Selection()
'bereinigt pseude-leere Zellen im selektierten Zellbereich
Dim Zelle As Range, StatusCalc As Long
If ActiveSheet.Type = xlWorksheet Then
With Application
.ScreenUpdating = False
.EnableEvents = False
StatusCalc = .Calculation
.Calculation = xlCalculationManual
End With
For Each Zelle In Selection.Cells
If Not Zelle.HasFormula Then
If Not IsEmpty(Zelle) And Zelle.Value = "" Then
Zelle.ClearContents
End If
End If
Next
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = StatusCalc
End With
End If
End Sub

Von mir angepasstes Makro:
Sub ClearEmptyCells_in_Selection()
'bereinigt pseude-leere Zellen im selektierten Zellbereich
Dim Zelle As Range, StatusCalc As Long
On Error Resume Next
Set selArea = Application.InputBox(Prompt:="Auswahl", Title:="Bitte wählen sie einen  _
Bereich aus", Type:=8)
If IsEmpty(selArea) Then Exit Sub
On Error GoTo errorblabla
For Each Zelle In selArea
If Not Zelle.HasFormula Then
If Not IsEmpty(Zelle) And Zelle.Value = "" Then
Zelle.ClearContents
End If
End If
Next
MsgBox "Makro erfolgreich"
Exit Sub
errorblabla:
MsgBox "Makro nicht erfolgreich"
End Sub
Danke und Grüße
Anzeige
AW: Nicht leere Zellen leere Zellen umwandeln
13.03.2017 11:15:19
Werner
Hallo Marcel,
hast du es denn mal mit Daniels Vorschlag versucht? Da brauchst du nicht mit einer Schleife über die einzelnen Zellen.
Sub setValue()
Dim selArea, cell As Range
Application.DisplayAlerts = False
On Error GoTo Ausgang
Set selArea = Application.InputBox(Prompt:="Auswahl", Title:="Bitte wählen sie einen Bereich  _
aus", Type:=8)
If Not selArea Is Nothing Then
selArea.Formula = selArea.Value
selArea.Replace What:="0", Replacement:="", Lookat:=xlWhole
MsgBox "Makro erfolgreich"
End If
Ausgang:
Application.DisplayAlerts = True
End Sub
Gruß Werner
Anzeige
AW: Nicht leere Zellen leere Zellen umwandeln
13.03.2017 14:02:02
Marcel
Danke Werner! Ich wusste nicht, wo ich den Teil von Daniel einsetzen musste. Funktioniert prima!
Gerne u.Danke für die Rückmeldung. o.w.T.
13.03.2017 14:04:21
Werner

343 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige