Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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 ?:)
Antworten 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)
Antworten 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)
Antworten 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
Antworten 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)
Antworten Top
#6
(04.01.2017, 19: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.
Antworten 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)
Antworten 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)
Antworten 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
Antworten Top
#10
Verzichte in VBA immer auf 'select' (sehe z.B. meine Code)
Antworten Top


Gehe zu:


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