Schleife ....bitte....
#1
Hallo und guten Morgen....

Ich bin im VBA-programmieren leider noch nicht wirklich gut, kann mir zwar ein ganz klein wenig abhelfen, so arg viel Spaß macht das noch nicht....

zum Rücksetzten meiner Tabelle hab ich überall "0en" einfügen lassen.
das das dann natürlich mords viel zu schreiben ist...., (und mit Sicherheit sehr unsinnig sein wird - kann ich erahnen) Smile aber da ich mit den SCHLEIFEN immer noch auf Kriegsfuß steh, 
geht's zur Zeit noch nicht anders,.... ich möchte mich aber sehr gerne weiterentwickeln, bzw. viel besser werden....

Vielleicht mag sich wer mein Gebasteltes annehmen/ansehen, und mir weiterhelfen, *mit Kommentaren wäre toll. und mir das noch mal erklären 
wie, wann, warum man das so oder so schreibt das würde mir sehr weiterhelfen....

Vielen Dank im Voraus, und euch allen ein schönes Wochenende

kleiner Auszug aus dem Code:
Code:
Option Explicit

Sub Nullen0a()
' Nullen0a Makro
    ActiveSheet.Unprotect
    Range("A5").Select
    ActiveCell.FormulaR1C1 = "0"
    Range("A6").Select
    ActiveCell.FormulaR1C1 = "0"
    Range("A7").Select
Leider "musste ich das für 100 Zeilen machen.... 
Ich weiß das ist echt nicht gut Smile  -  funktionieren tut es aber trotzdem, wenn auch langsam.

Muster natürlich im Anhang!
Passwort gibt es keines...

lg Andreas


Angehängte Dateien
.xlsm   Ust Berechnung5.xlsm (Größe: 60,18 KB / Downloads: 4)
Antworten Top
#2
Hi,

Code:
Sub oder_so()
Range("A5:B105,D5:D105,G5:G105").ClearContents
End Sub


Bereiche noch bei Bedarf erweitern.
[-] Folgende(r) 1 Nutzer sagt Danke an {Boris} für diesen Beitrag:
  • RausAndr
Antworten Top
#3
Hi,

z.B. so


Code:
Sub Nullen0a()
ActiveSheet.Unprotect Password = ""
    Range("A5:A100") = 0
End Sub
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
[-] Folgende(r) 1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag:
  • RausAndr
Antworten Top
#4
Super, Viele Dank für eure schnelle Hilfe
Antworten Top
#5
Hallo,
Zitat:und mir das noch mal erklären 
wie, wann, warum man das so oder so schreibt das würde mir sehr weiterhelfen....

auch wenn du evt hier nicht mehr hereinschaust und bereits 2 gute Lösungen vorliegen, die keine Schleifen brauchen, habe ich dir mal
etwas gebastelt über For-Schleifen. Ggfs. schauen bei dem Thema ja auch noch andere "Neulinge"


Bevor du das ausprobierst, schau dir noch nachfolgenden Link an.
Danach bist du von SELECT geheilt und kannst mit dem Makrorecorder zukünftig so arbeiten, dass er dir mehr nutzt ( falls dir Befehlsfolgen nicht einfallen )
und du vom Recordermüll nicht mehr erschlagen wirst

https://online-excel.de/excel/singsel_vba5c8a.html?f=78


Das Makro Schleife() wäre die Schleifenform deines Codes ( jede Zelle ab A5 bis zur letzten benutzten Zelle Spalte A  mit einer 0 )

Ich habe alles in eine With .... End With Struktur eingebettet. Bedeutet: alle Befehle oder Objekte, vor denen unmittelbar ein . (Punkt) steht,
beziehen sich auf das With - Object  ( hier: ActiveSheet )
Code:
Sub schleife()
  Dim sz As Long    'schleifenzaehler  (sz)
  Dim lbzA As Long  'letzte benutzte Zelle in Spalte A (lbzA )
 
With ActiveSheet
 
  .Unprotect        'nicht passwortgestützten Schutz aufheben
 
  ' letzte benutzte Zelle in Spalte A ermitteln
  ' entspricht im Tabellenblatt der Tastenfolge Bild herunter ; anschließend
  ' STRG + Pfeil nach oben ==> selektieren der letzten benutzten Zelle
  ' der Spalte, in der sich der Cursor befindet
 
  lbzA = .Cells(Rows.Count, 1).End(xlUp).Row
 
  ' For- Schleife braucht einen SchleifenAnfang und ein SchleifenEnde  ( hier von 1 bis zur Zeile der letzten befüllten Zelle)
  ' in Spalte 1 ( A )
  ' der Schleifenzähler zählt sich selber in jedem Durchgang um den Wert 1 hoch, da lbzA > als 1
 
  For sz = 5 To lbzA
    .Cells(sz, 1).Value = 0
  Next

End With

End Sub


Gehe doch mal nachfolgenden Code schrittweise durch, d.h.:

Cursor in den Code und dann mit der F8 Taste wiederholend  den Code Zeile für Zeile 'abarbeiten'
Eine Messagebox zeigt dir, wie sich der Schleifenzähler verhält

Code:
Sub test()
Dim zaehler As Long
Dim zaehlerAnfang As Long, zaehlerEnde As Long

zaehlerAnfang = 5
zaehlerEnde = 10

' übliche / normale Schleife von kleinem Wert nach großem Wert, schrittweite 1

For zaehler = zaehlerAnfang To zaehlerEnde
  MsgBox zaehler
Next

' Scheife aufwärts mit Schrittweite ungleich 1
For zaehler = zaehlerAnfang To zaehlerEnde Step 2
  MsgBox zaehler
Next

' Scheife abwärts mit Schrittweite ungleich 1
For zaehler = zaehlerEnde To zaehlerAnfang Step -2
  MsgBox zaehler
Next
End Sub


VG Juvee
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste