Matroids Matheplanet Forum Index
Moderiert von Bilbo matph
Matroids Matheplanet Forum Index » Informatik » VBA 2. Schleife
Autor
Schule VBA 2. Schleife
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2624
  Themenstart: 2021-10-18

\sourceon VBA Excel \numberson Public Sub Erledigt() Dim Zelle As Range Dim Zähler As Integer Set Zelle = ActiveSheet.Range("A1:A7").Cells(1) Do Until IsEmpty(Zelle.Value) 'Solange Zellen gefunden werden ... Do Until Zähler = (Zelle.Value) Zelle.Offset(0, (Zelle.Value)) = (Zelle.Value) '... den Zellenwert" in Spalte Zellenwert ' Zelle.Offset(0, 2) = "(Zelle.Value)" '... Schreibe "(Zelle.Value)" in Spalte E Zelle.Offset(0, (Zelle.Value)).Interior.ColorIndex = (Zelle.Value + 2) Loop Set Zelle = Zelle.Offset(1) ' und gehe 1 Zeile nach unten Loop End Sub \sourceoff Ich habe jetzt eine 2. Do Schleife eingefügt. Aber es läuft nicht, was mach ich falsch ... Ist das richtig, dass ich Zähler.Value in Zeile 8 in Klammer? was macht man eigentlich im VBA-Fenster, wenn das runde rad sich dreht, Escape nicht unktioniert und gar nichts mehr geht ...?


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2951
  Beitrag No.1, eingetragen 2021-10-18

Es ist leider völlig unklar, was du mit dem Zähler eigentlich tun willst. Wenn ich mir deine anderen Beiträge so anschaue, rate ich mal, dass du nicht nur die Zelle an der Stelle $i+1$ in der $i$-ten Zeile einfärben willst, sondern jede $i$-te Zelle bis zur Spalte $Z$. Das sähe dann so aus: \sourceon VBA Public Sub Erledigt() Dim Spalte As Range, Zelle As Range Dim Zähler As Long Set Spalte = ActiveSheet.Range("A1:A7") For Each Zelle In Spalte.Cells For Zähler = Zelle To 25 Step Zelle With Zelle.Offset(ColumnOffset:=Zähler) .Value = Zelle .Interior.ColorIndex = Zelle + 2 End With Next Zähler Next Zelle End Sub \sourceoff Ergebnis:


   Profil
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2624
  Beitrag No.2, vom Themenstarter, eingetragen 2021-10-18

Danke Zippi, ist genau das, was ich wollte, aber leider wollte ich es selber machen... ich probier es mal, leider macht mein Vorschlag Excel so kaputt, dass am Mac nicht mal Command+Option+Escape was hilft, ich muss abstürzen lassen... Das kann ja nicht die Art der Bedienung des VBA-Fensters sein am Mac sein! Wir müsssen das leider rausnehmen, dass die Zeilennummer der Farbcode zugleich ist, weil da Farben kommen, wo die zahl nicht mehr zu lesen ist.... kannst Du bitte die Zeilenzahl auf 15 begrenzen, und dann muss es so gemacht werden, dass ich für jede Zeile den Farbcode per Hand eingeben kann, oder besser, ich gebe die Farbe in der A-Spalte vor, und dann übernimmt er die dort vorgegeben automatisch für die ganze Zeile.... wenn ich jetzt .Interior.ColorIndex = 6 schreibe, machter alle gelb, wat ik nich wollte Und gibt es einen Befehl, dass er die Spaltenbreite automatisch auf 3 setzt? Ich kuck mal...


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2951
  Beitrag No.3, eingetragen 2021-10-18

\quoteon(2021-10-18 10:36 - Bekell in Beitrag No. 2) ich gebe die Farbe in der A-Spalte vor, und dann übernimmt er die dort vorgegeben automatisch für die ganze Zeile.... \quoteoff \sourceon VBA For Each Zelle In Spalte.Cells For Zähler = Zelle To 25 Step Zelle With Zelle.Offset(ColumnOffset:=Zähler) .Value = Zelle .Interior.Color = Zelle.Interior.Color End With Next Zähler Next Zelle \sourceoff \quoteon(2021-10-18 10:36 - Bekell in Beitrag No. 2) Und gibt es einen Befehl, dass er die Spaltenbreite automatisch auf 3 setzt? \quoteoff \sourceon VBA ActiveSheet.Columns.ColumnWidth = 3 \sourceoff


   Profil
Scynja
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 23.02.2011
Mitteilungen: 470
Wohnort: Deutschland
  Beitrag No.4, eingetragen 2021-10-18

\sourceon vba Do Until Zähler = (Zelle.Value) \sourceoff Du änderst in der Schleife nie Zähler oder Zelle. Deshalb terminiert das Programm nicht.


   Profil
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2624
  Beitrag No.5, vom Themenstarter, eingetragen 2021-10-18

Danke Zippy, super - VBA scheint Dein eigentliches Metier zu sein, nicht Python... https://matheplanet.com/matheplanet/nuke/html/uploads/b/23651_ZippysJoke1.png So lernt man schnell... Ich weiss nicht, ob sich die Veränderung noch machen lässt: Die jeweilige Zeile ausser der VorgabeZelle A soll aktiv sein. Der Mensch klickt jetzt auf eine Zelle in der 1. Zeile und dort hin kommt der Ausgangspunkt, und dann wird die ganze Zeile innerhalb der vorgegebenen Grenzen nach vorn und hinten so ausgefüllt, wie im Bild. Dann kommt die nächste Zeile dran... u.s.w. u.s.f bis nach unten. Und dann gibt es einen Knopf (Löschen), und alles kann von vorn beginnen ... [Die Antwort wurde nach Beitrag No.3 begonnen.]


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2951
  Beitrag No.6, eingetragen 2021-10-18

Ich bin mir nicht sicher, worauf du genau hinauswillst, aber ich mache mal einen Anfang, von dem du dann weiterarbeiten kannst: \sourceon VBA Public Sub ClearActiveSheet() With ActiveSheet.Cells .Value = "" .Interior.ColorIndex = xlColorIndexNone End With End Sub Public Sub FillOutRow() Const MaxColumn As Long = 26 Dim Column As Long, Increment As Long Increment = ActiveCell.Column - 1 For Column = 1 To MaxColumn Step Increment With ActiveCell.EntireRow.Cells(ColumnIndex:=Column) .Value = Increment .Interior.Color = ActiveCell.Interior.Color End With Next Column End Sub \sourceoff Die erste Funktion löscht Inhalte und farbliche Hinterlegungen, die zweite nimmt die Färbung und die Position der aktiven Zelle und füllt dann die ganze Zeile passend aus. Ausgangspunkt: Nach Ausführung von FillOutRow:


   Profil
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2624
  Beitrag No.7, vom Themenstarter, eingetragen 2021-10-18

Das meinte ich genau so, Zippy- DANKE! Nur dass die erste Spalte, also, von wo er Farbe und Zahl nimmt, stehen bleiben sollte... und gelöscht sollte dann nur von Spalte B bis Ende ich bin in VBA leider sehr sehr unerfahren...


   Profil
Bekell hat die Antworten auf ihre/seine Frage gesehen.
Bekell wird per Mail über neue Antworten informiert.

Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2021 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]