Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

VBA Hilfe

A.G. / 1 Antworten / Baumansicht Nickles

Hallo


bin anfänglicher Programierer


kann mir bitte jemand beim schreiben folgender Prozedur helfen?


In 98 Arbeitsblättern ist ein Wert markiert, d.h. alle Arbeitsblätter ausgewählt und per maus ist eine Zelle markiert.
In dieser Zelle steht ein Wert.
ISt der Wert poistiv, muss daraus eine Null  werden, ist er negativ, gehts zum nächsten Arbeitsblatt.


Ich komme mit VBA Hilfe von Office nicht klar, kann mir jemand noch Tipps geben?


Na ja, so habe ich die programiert, aber natürlich geht das nicht.
Ich kann bei besten Willen in der VBA hilfe nichts finden.


 


Sub PositiveLoeschen()


Dim i As Integer
i = 1


Do Until ActiveWorkbook.ActiveSheet.Name = "98"
ThisWorkbook.Worksheets(i).Select


If Worksheets(i).ActiveCell.Value < 0 Then i = i + 1
Worksheets(i).ActiveSheet.ActiveCell.Value=0


Loop
End Sub



Oder so:


gehe in einer Schleife alle Arbeitsblätter durch, bis Arbeitsblatt 98 kommt
Schaue in der bereits markierten Zelle, in jedem Arbeitsblatt, ob der Wert Negativ ist, ist er das - gehe zum nächsten Arbeitsblatt
Anderenfalls ersteze den Positiven Wert durch eine null.


Danke im voraus


Andrej

bei Antwort benachrichtigen
Borlander A.G. „VBA Hilfe“
Optionen
If Worksheets(i).ActiveCell.Value Worksheets(i).ActiveSheet.ActiveCell.Value=0

Hier dürfte der Knackpunkt liegen - sobald die Aktive Zelle >=0 ist bleibt i unverändert und das Programm läuft in einer Endlosschleife...

1. Um alle Arbeitsblätter zu durchlaufen muß i in jedem Schleifendurchlauf um eins Vergrößert werden
2. Wenn die Aktive Zelle >0 ist dann wird der Wert auf 0 gesetzt


Do Until ActiveWorkbook.ActiveSheet.Name = 98
  ThisWorkbook.Worksheets(i).Select

  REM AktiveZelle>0 -> AktiveZelle:=0
  If Worksheets(i).ActiveCell.Value > 0 Then Worksheets(i).ActiveSheet.ActiveCell.Value=0

  REM Index für nächsten Durchlauf erhöhen
  i = i + 1

Loop



Gruß
Borlander
bei Antwort benachrichtigen