Microsoft Excel

Herbers Excel/VBA-Archiv

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

Spalte m. Faktor multipl., leere Zellen ignorieren

Betrifft: Spalte m. Faktor multipl., leere Zellen ignorieren von: Katinka
Geschrieben am: 19.04.2015 14:17:15

Hallo ihr lieben Excel-Könner,

leider habe ich bisher nicht die Lösung für mein Problem gefunden, deshalb hier die Frage.

Um die bedingte Formatierung anzuwenden, müssen etliche Zahlen einer Tabelle, die aus einer .txt-Datei kommen, erst noch mit 1 multipliziert werden. Das soll folgender Code erledigen:

Sub vorbereiten_bedingte_Formatierung()
Dim Bereich As Range
Dim Zelle As Range
Dim Faktor As Variant
Faktor = 1
Set Bereich = ActiveSheet.Range("G3:G300,I3:I300,J3:J300,K3:K300,L3:L300,M3:M300,N3:N300,O3: _
O300,P3:P300,Q3:Q300,R3:R300")
For Each Zelle In Bereich
If IsNumeric(Zelle.Value) Then
Zelle.Formula = Zelle.Value * Faktor
End If
Next Zelle
End Sub
Der Code funktioniert, aber in den Spalten sind oft auch weniger als 300 Werte und dann stehen in diesen eigentlich leeren Zellen plötzlich Nullen.

Die vorher leeren Zellen sollten also leer bleiben. Kann man das in diesen Code irgendwie einbauen?
Vielleicht sind die angeblich leeren Zellen auch nicht wirkich leer, da sie von If IsNumeric ignoriert werden. Auch hierfür die Frage ob man diesen Code anpassen kann?

Leider kann ich nicht im Nachhinein alle Nullen entfernen lassen, da auch im Wertebereich Nullen stehen, die aber gebraucht werden und bleiben müssen.

Ich hoffe, das ist irgendwie verständlich.

Grüße und noch einen schönen Sonntag
Katinka

  

Betrifft: AW: Spalte m. Faktor multipl., leere Zellen ignorieren von: Hajo_Zi
Geschrieben am: 19.04.2015 14:33:34

Hallo Katinka,

warum nicht einfach
Zelle.value= Zelle.Value
oder
If IsNumeric(Zelle.Value) and Zelle<>"" Then


GrußformelHomepage


  

Betrifft: Set-Anweisung, etwas kürzer ... von: Matthias L
Geschrieben am: 19.04.2015 14:39:20

Hallo

Set Bereich = ActiveSheet.Range("G3:G300,I3:R300")
Der Rest siehe Hajo

Gruß Matthias


  

Betrifft: eigentlich noch kürzer ... von: Matthias L
Geschrieben am: 19.04.2015 15:19:59

Hallo

Set Bereich = Range("G3:G300,I3:R300")
Da sich Range immer aufs aktive Tabellenblatt bezieht, wenn keine Referenz vorhanden ist.


Hier der komplette Code:
Option Explicit
Sub vorbereiten_bedingte_Formatierung()
Dim Bereich As Range, Zelle As Range
 Set Bereich = Range("G3:G300,I3:R300")
  Application.EnableEvents = False
   Application.ScreenUpdating = False
    For Each Zelle In Bereich
     With Zelle
      .Value = .Value
     End With
    Next
   Application.ScreenUpdating = True
  Application.EnableEvents = True
 Set Bereich = Nothing
MsgBox "fertig :-)"
End Sub

Gruß Matthias


  

Betrifft: AW: eigentlich noch kürzer ... von: Nepumuk
Geschrieben am: 19.04.2015 15:35:09

Hallo Matthias,

Set kannst du dir auch sparen denn die Variable wird nur ein einziges mal benutzt.

Sub vorbereiten_bedingte_Formatierung()
    Dim Zelle As Range
    With Application
        .EnableEvents = False
        .ScreenUpdating = False
        .Calculation = xlCalculationManual
    End With
    For Each Zelle In Range("G3:G300,I3:R300")
        With Zelle
            .Value = .Value
        End With
    Next
    With Application
        .EnableEvents = True
        .ScreenUpdating = True
        .Calculation = xlCalculationAutomatic
    End With
    MsgBox "fertig :-)"
End Sub

Gruß
Nepumuk


  

Betrifft: ok, ok ... von: Matthias L
Geschrieben am: 19.04.2015 15:46:58

Hallo Nepumuk

Das mit dem Set habe ich ja nur übernommen ;-)
Aber Du hast natürlich absolut Recht! :-)

Gruß Matthias


  

Betrifft: AW: eigentlich noch kürzer ... von: Katinka
Geschrieben am: 19.04.2015 16:02:52

Hallo Nepomuk,

auch an Dich: Vielen Dank!

Das Set Bereich kam ja schon von mir, kenne das halt' nur so (bisher). Und ich war stolz wie Bolle. Matthias kann da nix für.

Auch für Dich noch einen schönen sonnigen Restsonntag.
Katinka


  

Betrifft: AW: Nepumuk natürlich, sorry von: Katinka
Geschrieben am: 19.04.2015 18:03:29

Nepumuk natürlich, sorry


  

Betrifft: AW: Hajo und Matthias von: Katinka
Geschrieben am: 19.04.2015 15:50:16

Hallo Hajo, Hallo Matthias,

so schnell Antwort und das am Sonntag, ihr seid genial. Vielen Dank.

Habe zunächst die ersten Tipps ausprobiert, funtionieren super und Matthias' kompletter Code natürlich ebenfalls.

An Matthias: Die Msg-Box "fertig" bleibt auf jeden Fall drin, die ist spaßig und gefällt mir.

Nochmals danke an euch zwei und einen schönen sonnigen Restsonntag
Katinka


 

Beiträge aus den Excel-Beispielen zum Thema "Spalte m. Faktor multipl., leere Zellen ignorieren"