Thema Datum  Von Nutzer Rating
Antwort
Rot In Tabelle mit neuer Zeile automatisch neue Checkbox hinzufügen
01.07.2020 16:46:25 Sascha
NotSolved
01.07.2020 17:12:08 Gast48388
NotSolved
01.07.2020 22:09:34 Gast78375
NotSolved

Ansicht des Beitrags:
Von:
Sascha
Datum:
01.07.2020 16:46:25
Views:
1198
Rating: Antwort:
  Ja
Thema:
In Tabelle mit neuer Zeile automatisch neue Checkbox hinzufügen

Hallo liebe Experten,

 

ich habe folgendes Problem in meiner VBA Programmierung im Excel Makro. 

Ich habe einen Bereich als Tabelle formatiert. Nun wird bei jedem Hinzufügen einer neuen Zeile Automatisch so eine Checkbox hinzugefügt:
 

i = 31
Do While i < 900
        If Worksheets("Eingabeseite").Cells(i, 1) = Empty Then
              Worksheets("Eingabeseite").OLEObjects.Add "Forms.CheckBox.1", Left:=Cells(i, 17).Left, Top:=Cells(i, 17).Top, Width:=Cells(i, 17).Width, Height:=Cells(i, 17).Height
            
            Exit Do
        Else
            i = i + 1
        End If
Loop

Jener Code funktioniert und fügt mir bei jedem Klick auf eine Schaltfläche sowohl eine neue Zeile als auch eine neue Ckeckboox in korrekt nummerierter Reihenfolge hinzu. Aber wenn ich nun ein anderes Makro starte, dass sowohl die Zeile in der die Checkbox aktiviert ist, als auch die jeweilige Checkbox löschen soll bin ich auf ein Problem gestoßen.

Mein Ansatz war Zeile wo checkbox aktiviert ist löschen, dann alle Checkboxes entfernen, anschließend neue Checkboxen hinzufügen zu jeder verbleibenden Zeile.

Funktioniert grundsätzlich, aber Checkbox 1 und 2 sind nach dem 2. Makro immer vertauscht alle anderen Stimmen ich sehe nicht warum bitte um Hilfe. Lösungen.

Danke

Code des Makros 2:

Sub Ausgewaehlte_Zeilen_Löschen()
 
i = 31
n = 1
Do While i < 900
    If Worksheets("Eingabeseite").Cells(i, 1) = Empty Then
        Exit Do
    Else
        
        If Worksheets("Eingabeseite").OLEObjects("CheckBox" & n).Object.Value = True Then
            If i = 31 And Worksheets("Eingabeseite").Cells(i + 1, 1) = Empty Then
                Worksheets("Eingabeseite").Range("A31") = Clear
                Worksheets("Eingabeseite").Range("B31") = Clear
                Worksheets("Eingabeseite").Range("C31") = Clear
                Worksheets("Eingabeseite").Range("D31") = Clear
                Worksheets("Eingabeseite").Range("E31") = Clear
                Worksheets("Eingabeseite").Range("F31") = Clear
                Worksheets("Eingabeseite").Range("G31") = Clear
                Worksheets("Eingabeseite").Range("H31") = Clear
                Worksheets("Eingabeseite").Range("G31") = Clear
                Worksheets("Eingabeseite").Range("I31") = Clear
                Worksheets("Eingabeseite").Range("J31") = Clear
                Worksheets("Eingabeseite").Range("K31") = Clear
                Worksheets("Eingabeseite").Range("L31") = Clear
                Worksheets("Eingabeseite").Range("M31") = Clear
                Worksheets("Eingabeseite").Range("N31") = Clear
                Worksheets("Eingabeseite").Range("O31") = Clear
                Worksheets("Eingabeseite").Range("P31") = Clear
                Worksheets("Eingabeseite").Range("Q31") = Clear
            Else
                Worksheets("Eingabeseite").Range(Worksheets("Eingabeseite").Cells(i, 1), Worksheets("Eingabeseite").Cells(i, 16)).Delete
            End If
            
            For Each OLEObject In Worksheets("Eingabeseite").OLEObjects
                If InStr(OLEObject.progID, "CheckBox") Then
                    OLEObject.Delete
                End If
            Next
            
        
            j = 31
            Do While j < 900
               If Worksheets("Eingabeseite").Cells(j, 1) = Empty Then
                  Exit Do
               Else
                  If Worksheets("Eingabeseite").Cells(j, 1) = "Windrad" Then
                    Worksheets("Eingabeseite").OLEObjects.Add "Forms.CheckBox.1", Left:=Cells(j + 1, 17).Left, Top:=Cells(j + 1, 17).Top, Width:=Cells(j + 1, 17).Width, Height:=Cells(j + 1, 17).Height
                  Else
                    Worksheets("Eingabeseite").OLEObjects.Add "Forms.CheckBox.1", Left:=Cells(j, 17).Left, Top:=Cells(j, 17).Top, Width:=Cells(j, 17).Width, Height:=Cells(j, 17).Height
                  End If
                  j = j + 1
                
               End If
            Loop
            Exit Do
        End If
        
        i = i + 1
        n = n + 1
    End If
Loop

End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot In Tabelle mit neuer Zeile automatisch neue Checkbox hinzufügen
01.07.2020 16:46:25 Sascha
NotSolved
01.07.2020 17:12:08 Gast48388
NotSolved
01.07.2020 22:09:34 Gast78375
NotSolved