Checkbox wert ausgeben
#1
Hallo zusammen,

ich habe mal wieder eine frage zu den Checkboxen.
Ich möchte wenn ich die Checkbox in der jeweiligen Zeile aktiviert habe, dass als bsp in Zelle A5 steht "Storno" in roter schrift und fett.

Sub storno2(Adr As String, An As Integer)
    RR = Split(Adr, "$")(2)
Debug.Print Adr, An, RR
If An = 1 Then
    Cells(RR, "G") = "STORNO"
Else
    Cells(RR, "G") = ""
End If
End Sub


wie lautet den der quelltext hierzu ?:)
Top
#2
Hallöchen,

ich vermute jetzt mal, dass Deinem Code eine Adresse aus der Zeile übergeben wird, wo die Checkbox steht. In dem Fall brauchst Du nur die "G" durch "A" zu ersetzen.
Die Farbe und Fett bekommst Du mit Hilfe der bedingten Formatierung hin.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#3
Moin André!
Zitat:Die Farbe und Fett bekommst Du mit Hilfe der bedingten Formatierung hin.

Macht natürlich Sinn, die Schriftfarbe und den Schriftschnitt bei einem Leerstring zurückzusetzen.
:21: :05:

@hbboy:
Du solltest mal den gesamten Code zeigen, am besten gleich die Datei.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#4
Hallo danke für eure Antworten.

Modul:

Sub storno()
With ActiveSheet.CheckBoxes
    For i = 8 To 200
        .Add(Cells(i, "P").Left, Cells(i, "P").Top, 0, 0).Select
        Selection.Caption = ""
        Selection.OnAction = "Tabelle1.Kontrollkästchen_Klicken3" 'im Kopf des sheets
    Next i
End With
End Sub

Sub storno2(Adr As String, An As Integer)
    RR = Split(Adr, "$")(2)
Debug.Print Adr, An, RR
If An = 1 Then
    Cells(RR, "G") = "STORNO"
Else
    Cells(RR, "G") = ""
End If
End Sub


Hierzu habe ich eine Frage er setzt mit die Boxen immer ganz links hin wenn ich Sie erstelle, können sie auch mittig erstellt werden ?Falls ja wo muss ich die Änderung durchführen? Es soll nur dick und Rot sein wenn STORNO dort steht, sonst sind da immer Zahlen.

Sheet:
Sub Kontrollkästchen_Klicken3()
Dim shp As Shape
Set shp = ActiveSheet.Shapes(Application.Caller)
Debug.Print shp.Name, shp.ControlFormat.Value, shp.TopLeftCell.Address
Call storno2(shp.TopLeftCell.Address, shp.ControlFormat.Value)
End Sub
Top
#5
Hallöchen,

da steckt einfach nur etwas Mathe dahinter. Hier setzt Du die Position in die linken (Left) oberen (Top) Ecken.
.Add(Cells(i, "P").Left, Cells(i, "P").Top, 0, 0).Select

Die Mitte einer Zelle bekommst Du über die Hälften von Width und Height, die Du dann zu Left und Top addieren musst. Für Left im Prinzip so:
Cells(i, "P").Left + Cells(i, "P").Width / 2

Allerdings ist dann die linke Ecke in der Mitte der Zelle. Eventuell willst Du sie ja zentriert in einer Zelle?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#6
(04.01.2017, 20:01)schauan schrieb: Haa stecktllöchen,


Allerdings ist dann die linke Ecke in der Mitte der Zelle. Eventuell willst Du sie ja zentriert in einer Zelle?

vielen dank für die antwort ja genau, wenn es dafür einen Befehl geben würde wäre es perfekt.
Top
#7
Hallöchen,

das wäre dann im Prinzip so.

Code:
Sub Makro2()
'Checkbox in B2 mit Maßen von B2 erzeugen
    ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _
        DisplayAsIcon:=False, Left:=Cells(2, 2).Left, Top:=Cells(2, 2).Top, Width:=Cells(2, 2).Width, Height:= _
        Cells(2, 2).Height).Select
'Checkbox in B4 mit Breite 25 und Hoehe 10 erzeugen (Maße kleiner als Zelle festlegen!)
    ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _
        DisplayAsIcon:=False, Left:=Cells(4, 2).Left, Top:=Cells(4, 2).Top, Width:=25, Height:=10).Select
'Checkbox zentrieren
    With ActiveSheet.Shapes("CheckBox2")
      'Links = halbe Differenz zwischen Zell- und Checkboxbreite
      .Left = Cells(4, 2).Left + (Cells(4, 2).Width - .Width) / 2
      'oben = halbe Differenz zwischen Zell- und Checkboxhoehe
      .Top = Cells(4, 2).Top + (Cells(4, 2).Height - .Height) / 2
    End With
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#8
Code:
Sub M_snb()
  With ActiveSheet.CheckBoxes
    Forj = 8 To 200
        with .Add(Cells(j, "P").Left+Cells(j, "P").width/2, Cells(j, "P").Top, 0, 0)
           .Caption = ""
           .OnAction = "Tabelle1.Kontrollkästchen_Klicken3"
        end with
    Next
  End With
End Sub

Aber.....
Kennst du font: Webdings, value "a" (ist ähnlich zu einem Kontrollkästchen)
Top
#9
Ich habe es hinbekommen mit den Werten.
Nun stehe ich vor folgendes Problem.
Durch eine Auswahl werden in bestimmten Feldern Zahlen eingefügt, sobald ich meine Checkbox anklicke, soll dies auch auf 0 gesetzt werden, dies funktioniert auch, jedoch überschreibt der dann meine Formel mit 0 (Formel weg).
Bekomme ich das irgendwie hin wenn ich auf die Checkbox klicke soll in einem Feld STORNO stehen in den in dennen eine 0 rein soll wird eine reingesetzt und wenn ich die Checkbox erneut aktiviere und den Hacken wieder rausnehme, dass dann der Urzustand mit den Zahlen wiederhergestellt wird ? (U.a. auch dass nicht meine Formel gelöscht wird).
anbei erhaltet ihr meinen Code:

Sub storno()
With ActiveSheet.CheckBoxes
    For i = 8 To 200
        .Add(Cells(i, "P").Left, Cells(i, "P").Top, 0, 0).Select
        Selection.Caption = ""
        Selection.OnAction = "Tabelle1.Kontrollkästchen_Klicken3" 'im Kopf des sheets
    Next i
End With
End Sub

Sub storno2(Adr As String, An As Integer)
    RR = Split(Adr, "$")(2)
Debug.Print Adr, An, RR
If An = 1 Then
    Cells(RR, "G") = "STORNO"
    Cells(RR, "N") = "0"
    Cells(RR, "O") = "0"
    Cells(RR, "P") = "0"
    
Else
    Cells(RR, "G") = ""
    Cells(RR, "N") = ""
    Cells(RR, "O") = ""
    Cells(RR, "P") = ""
End If
End Sub
Top
#10
Verzichte in VBA immer auf 'select' (sehe z.B. meine Code)
Top


Gehe zu:


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