VBA Inkrement
#1
Hallo..

ich hab jetzt das:
   

Er nimmt jetzt die Spalte und fügt sie ein im Abstand ihres Wertes. (Die Schaltflächen funktionieren) Ich möchte aber, dass er die farbig hinterlegte Zahl aus Spalte K nimmt und im Abstand ihres Wertes einfügt im gekennzeichneten Bereich. (Das mit dem Abstand ihres Wertes macht er schon!)
Wo ist mein Fehler:

Code:
Public Sub Reihenfüller()
  Const MaxColumn As Long = 40
  Dim Column As Long, Increment As Long
  Increment = ActiveCell.Column - 1
  For Column = 12 To MaxColumn Step Increment
    With ActiveCell.EntireRow.Cells(ColumnIndex:=Column)
      .Value = Increment
      .Interior.Color = ActiveCell.Interior.Color
    End With
  Next Column
End Sub
 Ich vermute irgendwas mit AktiveCell stimmt nicht....
Antworten Top
#2
Hallöchen,

statt
Increment = ActiveCell.Column - 1
dann
Increment = Cells(ActiveCell.row, 11).Value
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
Danke Schauan.... hab es jetzt so: 

   

Eigentlich sollte er die Farbe aufnehmen, die in der entsprechenden Zelle in Spalte K vorgegeben. Was mach ich falsch?
Code:
Public Sub Reihenfüller()
  Const MaxColumn As Long = 40
  Dim Column As Long, Increment As Long
  Increment = Range("K:K").Cells(ActiveCell.Row)
  For Column = 12 To MaxColumn Step Increment
    With ActiveCell.EntireRow.Cells(ColumnIndex:=Column)
      .Value = Increment
      '.Interior.Color = ActiveCell.Interior.Color
      .Interior.Color = Range("K:K").Cells(ActiveCell.Row)
    End With
  Next Column
End Sub

Diesen code:  .Interior.Color = Range("K:K").Active.Cell.Interior.Color.    versteht er nicht! Ich vermute, er legt alle Farben aus der Spalte übereinander, und dann wird es schwarz!
Antworten Top
#4
Hallo

das Bild liess sich nicht öffnen, deswegen kann ich nur raten.  An dem Code ist so einiges falsch!!

Man kann nicht gleichzeitig die AktiveCell. mit EntireRow zur durchgehenden Zeile erklären, und ihr dann noch zusätzlich den Wert eines SpaltenIndex zuweisen. Ein Auto kann auch nicht gleichzeitig Rechts und Links abbiegen!!  Das bitte noch mal überdenken. Willst du eine komplette Zeile oder Spalte deklarieren??  Das ist mir da noch nicht klar, und ohne sichbares Beispiel kann ich es nicht erkennen.  Zu beachten ist auch das der Wert Increment keinen Einzelstep macht, sondern die Zahl in der Zelle die Stepzahl vorgibt!! 

Am besten eine Beispieldatei hochladen, das ist es übersichtlicher.  So ist mein Code auch nur geraten und nicht getestet!

mfg  Gast 123

Code:
Public Sub Reihenfüller()
  Const MaxColumn As Long = 40
  Dim Column As Long, Increment As Long
  Increment = Range("K" & ActiveCell.Row)   'so oder 2. Beispiel
  Increment = Cells(ActiveCell.Row, "K")
  For Column = 12 To MaxColumn Step Increment
    With Cells(Column).EntireRow
      .Value = Increment
      .Interior.Color = Cells(Column, "K").Interior.Color
    End With
  Next Column
End Sub

Nachtrag   in der CPU Maschinensprache ist Increment normalerweise das gleichmässige hochzählen eines Wertes um die Zahl 1.  Dekrement = -1
Antworten Top
#5
Hallöchen,

wann sollte denn die Farbe aufgenommen werden und wohin?
Du schriebst vor meinem Vorschlag

Zitat:Ich möchte aber, dass er die farbig hinterlegte Zahl aus Spalte K nimmt und im Abstand ihres Wertes einfügt im gekennzeichneten Bereich. (Das mit dem Abstand ihres Wertes macht er schon!)

Das in Klammern hatte schon mal nicht gestimmt. Der Code
Increment = ActiveCell.Column - 1
nimmt die Spaltenzahl -1 und nicht irgend etwas aus einer Zelle ...

Es sollte auch die farbig hinterlegte Zahl genommen und eingefügt werden. Das sagt nicht, das auch die Farbe der Zelle mitgenommen werden soll...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#6
(31.10.2021, 20:10)schauan schrieb: Hallöchen,

wann sollte denn die Farbe aufgenommen werden und wohin?
Du schriebst vor meinem Vorschlag
......

Es sollte auch die farbig hinterlegte Zahl genommen und eingefügt werden. Das sagt nicht, das auch die Farbe der Zelle mitgenommen werden soll...

Das habe ich variiert, Schauan. Wenn ich die Nr. der Reihe als Farbindex nehme, habe ich garantiert verschiedene Farben, auch wenn dann u. U. der Inhalt der Zelle nicht mehr zu sehen ist. Wenn ich dagegen die Farben in der Ausgangsspalte mit der Hand vorgebe, bekomme ich eine ausgewogenere Farbwahl.  Letzteres wird wohl bevorzugt werden.

(31.10.2021, 18:34)Gast 123 schrieb:  Increment = Range("K" & ActiveCell.Row)   'so oder 2. Beispiel
  Increment = Cells(ActiveCell.Row, "K")


Hallo Gast123 ,
Ich bekomme bei Deinen Inkrementsvorschlägen immer: "Laufzeitfehler 9 Index ausserhalb des definierten Bereichs....." Was tun?
Antworten Top
#7
Hallo

Üpps, nachdenken, seltsam??  Ich habe es bei mir gerade noch mal getestet, da funktioniert der Code. Es sei denn in der Zelle steht Text!
Dann kommt bei mir aber die Fehlermeldung: "Datentypen unverträglich".  Was ist denn bei dir im Blatt als -ActiveCell- konkret selektiert???

mfg Gast 123
Antworten Top


Gehe zu:


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