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.

VBA - Wenn Checkbox = True, Dann Userform Werte in Zelle eintragen
#1
Hallo Zusammen,

ich habe gerade ein Problem bei der Code erstellung und weiss nicht wirklich ich vorgehen muss.

Beispiel Sachverhalt :

Checkbox "Position bestätigt" ist bei Artikel 1, 4, 5 und 8 = True, wobei die Checkbox bei Artikel 2, 3, 6 und 7  = False sind.



Nun möchte ich die UserformWerte aus Artikel 1, 4, 5 und 8 in ein Tabellenblatt nacheinander rauschreiben.

Artikel 1 soll in Zelle 29 (ArtikelBez1 = C29, ArtikelBez2 = C30, ArtikelBez3 = C31, Menge = F29, ME = G29, Einzelpreis = H29)
Artikel 4 soll in Zelle 32 (ArtikelBez1 = C32, ArtikelBez2 = C33, ArtikelBez3 = C34, Menge = F32, ME = G32, Einzelpreis = H32)
Artikel 5 soll in Zelle 35 (ArtikelBez1 = C35, ArtikelBez2 = C36, ArtikelBez3 = C37, Menge = F35, ME = G35, Einzelpreis = H35)
Artikel 8 soll in Zelle 38 (ArtikelBez1 = C38, ArtikelBez2 = C39, ArtikelBez3 = C40, Menge = F35, ME = G38, Einzelpreis = H38)
usw.


[
Bild bitte so als Datei hochladen: Klick mich!
]

Ich hoffe man versteht, was ich vorhabe :)

Über einen Ansatz würde ich mich sehr freuen

      

   Grüße

Semi
Antworten Top
#2
Zitat:Ich hoffe man versteht, was ich vorhabe
Ich bin nicht ganz sicher... meinst du so?

Code:
With Sheets("DeinBlatt")
    If CheckBox1 = True then
        .Range("C29") = TextBox1
        .Range("C30") = TextBox2
        'etc. etc.
    End If
End With
Schöne Grüße
Berni
Antworten Top
#3
Hi MisterBurns,

vielen Dank hierfür, aber leider ist es nicht der Code nach dem ich suche, da es nicht dynamisch ist. Ich glaube man müsste hier eher mit schleifen arbeiten.

In deinem Beispiel hätte ich eine Lücke, da die 2te Checkbox = False ist und somit die Range ("C32:C35") leer wäre.

Jedoch möchte in der Range ("C32:C35") die nächsten Werte stehen haben bei der die darauffolgende Checkbox auf True ist, in meinem Beispiel also Checkbox 4.

Grüße

Semi
Antworten Top
#4
Und wie heißen deine Textfelder? Sind die nach irgendeiner Logik numeriert? Ohne das wird's nämlich nix mit der Schleife.
Schöne Grüße
Berni
Antworten Top
#5
Hier das Schema der Artikelpositionen:

Artikel 1: Artikel1Bez1, Artikel1Bez2, Artikel1Bez3, Artikel1Menge, Artikel1ME, Artikel1Preis
Artikel 2: Artikel2Bez1, Artikel2Bez2, Artikel2Bez3, Artikel2Menge, Artikel2ME, Artikel2Preis
Artikel 3: Artikel3Bez1, Artikel3Bez2, Artikel3Bez3, Artikel3Menge, Artikel3ME, Artikel3Preis
usw.
Antworten Top
#6
So müsste es gehen, vorausgesetzt, du hast deine Comboboxen von 1 weg durchgehend gleich wie die Artikelnummer nummeriert:

Code:
Private Sub CommandButton1_Click()
Dim ChBox As Object
Dim i As Integer
Dim j As Integer
Dim k As Integer

i = 29          'Startzeile in Tabelle
j = 1           'Zähler für Artikelseite
k = 1           'Zähler für Textbox

For Each ChBox In Me.Controls
   If TypeName(ChBox) = "CheckBox" Then
       If ChBox.Value = True Then
       Debug.Print ChBox.Name
           With Sheets("Tabelle1")         'Blattname anpassen
               Range("C" & i) = Me.Controls("Artikel" & j & "Bez" & k)
               Range("C" & i + 1) = Me.Controls("Artikel" & j & "Bez" & k + 1)
               Range("C" & i + 2) = Me.Controls("Artikel" & j & "Bez" & k + 2)
               Range("F" & i) = Me.Controls("Artikel" & j & "Menge")
               Range("G" & i) = Me.Controls("Artikel" & j & "ME")
               Range("H" & i) = Me.Controls("Artikel" & j & "Preis")
           End With
       i = i + 3
       End If
   j = j + 1
   End If

Next ChBox

End Sub
Schöne Grüße
Berni
[-] Folgende(r) 1 Nutzer sagt Danke an MisterBurns für diesen Beitrag:
  • Semi069
Antworten Top
#7
Auch Hallo,

war zu langsam aber da ich doch ein wenig anders als Bernie durch die Userform gehe, poste ich meinen Code mal.

Code:
Private Sub CommandButton1_Click()
   Dim lngC As Long
   Dim lngZeile As Long
  
   lngZeile = 32
   With Worksheets("Tabelle1")
      For lngC = 1 To Me.MultiPage1.Pages.Count
      '   MsgBox lngC
         If Controls("Checkbox" & lngC) Then
            .Cells(lngZeile, 3).Value = Controls("Artikel" & lngC & "Bez1").Value
            .Cells(lngZeile + 1, 3).Value = Controls("Artikel" & lngC & "Bez2").Value
            'und die weiteren Textboxen
            lngZeile = lngZeile + 3
         End If
      Next lngC
   End With
End Sub
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • Semi069
Antworten Top


Gehe zu:


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