VBA Checkboxen immer wiederkehrend
#1
Hallo liebes Forum Smile,

ich bin immer noch bei meiner Tabelle und habe angefangen VBA elemente einzufügen.
Dies hat auch bei der ersten Zeile Super geklappt, durch ein klicken werden bestimmte Zellen farblich makiert, ich würde das gerne auch für die restlichen 191 Zeilen haben, würde aber ungerne 191 checkboxen einfügen und immer die nächst tieferen Zellen umtippen, damit die Zellen makiert werden welche auch in der Zeile sind wo sich die Checkbox befindet. Kennt ihr einen Trick, wie ich die Checkbox entweder mit der Zelle verschweißen kann, oder wie ich mir 191 einzelne Checkboxen spare und die alle neu deklariern muss(Eine Zeile tiefer).

Außerdem würde ich gerne wissen wie ich hin bekomme, das er mir von der NO Zeile die Anzahl ausgibt, bei wie vielen Checkboxen ein hacken ist.

Mein Code sieht so aus:

Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
Range("A8:I8").Interior.ColorIndex = 19 '19 = Farbton
Else
Range("A8:I8").Interior.ColorIndex = xlNone 'keine Hintergrund-Farbe
End If
End Sub

Ich brauche 191 weitere Checkboxen je in einer Zahle und A8:I8, soll immer eine Zeile tiefer gehen.

Vielen dank im voraus Smile
Antwortento top
#2
Hi,

(02.06.2016, 11:55)hbboy15 schrieb: ich bin immer noch bei meiner Tabelle und habe angefangen VBA elemente einzufügen.
Dies hat auch bei der ersten Zeile Super geklappt, durch ein klicken werden bestimmte Zellen farblich makiert, ich würde das gerne auch für die restlichen 191 Zeilen haben,

Das mit den viiiieeelen Checkboxen ist doch (gelinde gesagt) Mist.

Kannst Du nicht einfach einen Button einfügen, der dann ein universelles Makro (Dein seitheriges umgestrickt) aufruft, bei der als erstes die zu färbende Zeilennummer eingegeben wird mit Input-Box und dann wird diese Zeile gefärbt. Das könnte auch noch erweitert werden auf mehrere Zeilen.
Antwortento top
#3
Hallo,

eine Alternative wäre, völlig auf Checkbox zu verzichtig, und die Zellen per Doppleklick zu färben. Mit dem Worsheet event "before_doubleclick" kann man das (relativ) einfach erstellen.

mfg
Antwortento top
#4
Ich weiß, das ist etwas sehr mühselig da gebe ich dir Recht.
wie würdest du das denn umsetzen ?
anbei erhältst du meine Tabelle.
Es geht um die Spalte "NO".
weil manches soll farbig und manches nicht, das kann man im Vorfeld nicht vorhersehen, welche Zeile nun farblich markiert werden soll.
Am Ende sollte es möglich sein die Summe zuziehen wie viele Zeilen farblich makiert wurden (Häkchen in der Checkbox).

Vielen Dank für die schnelle rückmeldung Smile


Angehängte Dateien
.xlsx   Provision.xlsx (Größe: 39,26 KB / Downloads: 4)
Antwortento top
#5
Hi,

(02.06.2016, 12:31)hbboy15 schrieb: Ich weiß, das ist etwas sehr mühselig da gebe ich dir Recht.
wie würdest du das denn umsetzen ?

hier ist schon mal die Einfärbung, es funktioniert noch nicht perfekt,l aber da kann jemand anders sicher helfen.

Option Explicit

Public Flag As Boolean

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
   Dim lZeile As Long
   
   lZeile = ActiveCell.Row
   If Flag = False Then
      Range("A" & lZeile & ":I" & lZeile).Interior.ColorIndex = 19            '19 = Farbton 
      Flag = True
   Else
      Range("A" & lZeile & ":I" & lZeile).Interior.ColorIndex = xlNone        'keine Hintergrund-Farbe 
      Flag = False
   End If
   
End Sub
Antwortento top
#6
Hallo Ralf,

das DoubleClick-Ereignis gibt dir zwei Parameter zurück. Di könnte man auch nutzen.

PHP-Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As RangeCancel As Boolean)
'   Dim lZeile As Long
   
'   
lZeile ActiveCell.Row
   
If Flag False Then
      Cells
(Target.Row1).Resize(, 9).Interior.ColorIndex 19
'      Range("A" & lZeile & ":I" & lZeile).Interior.ColorIndex = 19            '19 Farbton
      Flag 
True
   
Else
'      Range("A" & lZeile & ":I" & lZeile).Interior.ColorIndex = xlNone        'keine Hintergrund-Farbe
      Cells
(Target.Row1).Resize(, 9).Interior.ColorIndex xlNone
      Flag 
False
   End 
If
   
Cancel True
End Sub 
Gruß Stefan
Win 7 / Office 2007
Antwortento top
#7
Hi Stefan,

(02.06.2016, 17:58)Steffl schrieb: das DoubleClick-Ereignis gibt dir zwei Parameter zurück. Di könnte man auch nutzen.

ja, so sieht es besser aus und funktioniert gut.
Antwortento top
#8
Hallöchen,

jetzt wäre noch die Frage nach dem Farben zählen zu klären. Da gibt es so min. 3 Varianten

Wenn in den Zellen nichts drin steht, könnte man ein Leerzeichen oder was anderes reinschreiben, wenn die Zelle gefärbt wird, und wenn sie entfärbt wird, auch den Eintrag wieder rausnehmen. Dann kannst Du mit ZÄHLENWENN die Leerzeichen zählen

Du kannst ohne Zelleintrag bei den neueren Excelversionen nach Farben filtern. Dann kannst Du z.B. mit Teilergebnis die sichtbaren Zeilen zählen, solltest aber dazu eine Spalte nehmen, wo in jeder Zeile garantiert was drin steht. Allerdings hast Du bei ungefilterter Tabelle dann wieder die komplette Anzahl

Man könnte mit einem weiteren Makro oder einer Excel4Makro-Funktion die Zeilen zählen.
Siehe dazu hier:
http://www.clever-excel-forum.de/Thread-...ige+zählen
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top
#9
Hi,

(03.06.2016, 17:01)schauan schrieb: Wenn in den Zellen nichts drin steht, könnte man ein Leerzeichen oder was anderes reinschreiben, wenn die Zelle gefärbt wird, und wenn sie entfärbt wird, auch den Eintrag wieder rausnehmen. Dann kannst Du mit ZÄHLENWENN die Leerzeichen zählen

ich hatte in das Makro eingebaut, daß in die Spalte J = NO ein X eingetragen wird, wenn die Zeile gefärbt ist:
https://dl.dropboxusercontent.com/u/4839...%20V2.xlsb
Antwortento top
#10
Hallo Ralf,

das ging aus diesem Thread aber nicht hervor :-(
Ansonsten, wenn Du das schreibst, glaub ich Dir 17 Ich lad doch nicht so gerne Dateien hoch und runter Confused
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top


Gehe zu:


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