Supportnet Computer
Planet of Tech

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

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

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

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

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

Antwort 6 von nighty

hi all :-)

war uebrigens 2 min makrorecorder :-)

es fehlt den membern fast immer ein wenig an phantasie hihi

gruss nighty

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: