|
Autor |
VBA 2. Schleife |
|
Bekell
Aktiv  Dabei seit: 05.09.2008 Mitteilungen: 3227
 | 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  Dabei seit: 24.10.2018 Mitteilungen: 5024
 | 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  Dabei seit: 05.09.2008 Mitteilungen: 3227
 | 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  Dabei seit: 24.10.2018 Mitteilungen: 5024
 | 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
Senior  Dabei seit: 23.02.2011 Mitteilungen: 590
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  Dabei seit: 05.09.2008 Mitteilungen: 3227
 | 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  Dabei seit: 24.10.2018 Mitteilungen: 5024
 | 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  Dabei seit: 05.09.2008 Mitteilungen: 3227
 | 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. |
|
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 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]
|