Supportnet / Forum / Tabellenkalkulation
Fehler im VBA-Code
Frage
ich bin etwas ratlos.
Ich habe diesen Code, doch er will nicht laufen.
Ich will in den Spalten, die als Spaltenbezeichnung "BO1" haben, in den einzelnen Zeilen die angaben mit "0" löschen.
Ich habe etwas falsch gemacht, er geht nicht in die nächste Spalte. Kannst Du mir meinen Fehler nennen?
meine Tabelle:
co mo BO1 co mo BO1
36166 36169
36169 36166
36163 0,57 0 36163 10,2 0
36164 0,77 0 36164 9,8
36165 2,1 0 36165 21,8 0
36166 0,72 0 36166 11,1
36167 0,96 36167 14,7
[list]Sub Null_löschen()
Dim leZeile As Integer, leSpalte As Integer
Dim I As Long, Sp As Long
Dim Inh As Long
Dim Bereich As Range
leZeile = Sheets("Endausw").UsedRange.Rows.Count
'letzte gefüllte Spalte der Tabelle feststellen
leSpalte = Sheets("Endausw").Range("IV1").End(xlToLeft).Column
Sheets("Endausw").Select
For Sp = 1 To leSpalte
If Cells(1, Sp) = "BO1" Then
Set Bereich = Range(Sp & ":" & Sp)
For I = 2 To leZeile
If Cells(Sp, I) = "0" Then Cells(Sp, I) = ""
Next I
End If
Next Sp
End Sub[/list]
Vielleicht mir jemand helfen. Entweder habe ich den Bereich nicht richtig gekennzeichnet, oder die Variablen-Bezeichnung ist falsch.
Vielen Dank schon jetzt
Antwort 1 von Hajo_Zi
Hallo NAmensloser,
Option Explicit
Sub Null_löschen()
Dim leZeile As Integer, leSpalte As Integer
Dim I As Long, Sp As Long
Dim Inh As Long
Dim Bereich As Range
Dim RaZelle As Range
With Sheets("Endausw")
leZeile = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
'letzte gefüllte Spalte der Tabelle feststellen
leSpalte = .UsedRange.SpecialCells(xlCellTypeLastCell).Column
For Sp = 1 To leSpalte
If .Cells(1, Sp) = "BO1" Then
Set Bereich = .Range(.Cells(2, Sp), .Cells(leZeile, Sp))
For Each RaZelle In Bereich
If RaZelle = "0" Then RaZelle = ""
Next RaZelle
End If
Next Sp
End With
Set Bereich = Nothing
End Sub
Gruß Hajo
Option Explicit
Sub Null_löschen()
Dim leZeile As Integer, leSpalte As Integer
Dim I As Long, Sp As Long
Dim Inh As Long
Dim Bereich As Range
Dim RaZelle As Range
With Sheets("Endausw")
leZeile = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
'letzte gefüllte Spalte der Tabelle feststellen
leSpalte = .UsedRange.SpecialCells(xlCellTypeLastCell).Column
For Sp = 1 To leSpalte
If .Cells(1, Sp) = "BO1" Then
Set Bereich = .Range(.Cells(2, Sp), .Cells(leZeile, Sp))
For Each RaZelle In Bereich
If RaZelle = "0" Then RaZelle = ""
Next RaZelle
End If
Next Sp
End With
Set Bereich = Nothing
End Sub
Gruß Hajo
Antwort 2 von emap
co............... mo ...... BO1......... co ....... .. mo ....... BO1
36166 .. .......0.......................... 36169 .........0...
36169 ..........0.......................... 36166
36163...... 0,57 ........ 0.......... 36163 ... ... 10,2 ......... 0
36164...... .... 0........... 0 ......... 36164 ....... 9,8
36165 ........ 2,1 .... .... 0 ......... 36165 ..... 21,8 ......... 0
36166 ...... 0,72 ........ 0 ......... 36166 ...... 11,1
36167...... 0,96 ..................... 36167 ...... 14,7
hier noch einmal die Tabelle hoffentlich übersichtlicher
ich sollte vielleicht noch einmal auf das Problem hinweisen: da auch in anderen Spalten "0" auftreten kann, die nicht gelöscht werden sollen, reicht "suchen - ersetzen" nicht.
Vielen Dank emap
36166 .. .......0.......................... 36169 .........0...
36169 ..........0.......................... 36166
36163...... 0,57 ........ 0.......... 36163 ... ... 10,2 ......... 0
36164...... .... 0........... 0 ......... 36164 ....... 9,8
36165 ........ 2,1 .... .... 0 ......... 36165 ..... 21,8 ......... 0
36166 ...... 0,72 ........ 0 ......... 36166 ...... 11,1
36167...... 0,96 ..................... 36167 ...... 14,7
hier noch einmal die Tabelle hoffentlich übersichtlicher
ich sollte vielleicht noch einmal auf das Problem hinweisen: da auch in anderen Spalten "0" auftreten kann, die nicht gelöscht werden sollen, reicht "suchen - ersetzen" nicht.
Vielen Dank emap
Antwort 3 von emap
Hallo Hajo,
vielen Dank für die schnelle Reaktion, hae es probiert mit dem Code. Leider läuft er nicht. Er läuft ohne Fehlermeldung durch, aber es ändert sich nichts.
Gruß
emap
vielen Dank für die schnelle Reaktion, hae es probiert mit dem Code. Leider läuft er nicht. Er läuft ohne Fehlermeldung durch, aber es ändert sich nichts.
Gruß
emap
Antwort 4 von Hajo_Zi
Hallo Namensloser,
ich habe mich an Deine Beschreibung gehalten. Es wird Zeile 1 geprüft ob da "BO1" steht. In de Spalte werden alle Einträge mit 0 durch nichts ersetzt.
Gruß Hajo
ich habe mich an Deine Beschreibung gehalten. Es wird Zeile 1 geprüft ob da "BO1" steht. In de Spalte werden alle Einträge mit 0 durch nichts ersetzt.
Gruß Hajo
Antwort 5 von nighty
hi all :-)
noch ein beispiel
gruss nighty
Sub Makro3()
Application.Goto Reference:="BO1"
Selection.Replace What:="0", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByColumns, MatchCase:=True
Range("A1").Select
End Sub
noch ein beispiel
gruss nighty
Sub Makro3()
Application.Goto Reference:="BO1"
Selection.Replace What:="0", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByColumns, MatchCase:=True
Range("A1").Select
End Sub
Antwort 6 von nighty
hi all :-)
war uebrigens 2 min makrorecorder :-)
es fehlt den membern fast immer ein wenig an phantasie hihi
gruss nighty
war uebrigens 2 min makrorecorder :-)
es fehlt den membern fast immer ein wenig an phantasie hihi
gruss nighty