Autor
|
Thema: Problem bei Überprüfung des Checkboxnamens via Makro (697 mal gelesen)
|
Diesaster Mitglied Student
Beiträge: 61 Registriert: 05.11.2015 Microsoft Excel 2016
|
erstellt am: 30. Jul. 2018 07:16 <-- editieren / zitieren --> Unities abgeben:
Hallo Community, vielleicht könnt ihr mir weiterhelfen. Im Rahmen meiner Bachelorarbeit ist es ein Teil meiner Aufgabe eine Excel-Tabelle zu programmieren. Diese hat gewisse Identifikationsmerkmale, welche durch Kontrollkästchen ausgewählt werden sollen. Die Identifikationsmerkmale sollen später in eine Catia-Tabelle geschrieben werden. Bei der Erstellung der Kontrollkästchen jedoch habe ich ein Problem, welches meiner Meinung nur von Visual Basic her kommen kann. Die Identifikationsmerkmale sind variable, das heißt, dass die Tabelle immer wieder um einen oder mehrere Punkte erweitert werden kann. Diese Überprüfung habe ich eingebaut und je nach Situation werden beim Aktualisieren der Tabelle alle Kontrollkästchen durch einen Programmcode gelöscht und komplett neu erzeugt, einschließlich des Programmcodes. Da jedoch die Kästchen nicht nach der Reihenfolge der Zeilen benannt werden, habe ich den Kontrollkästchen beim Erstellen einen Namen zugewiesen, damit die Reihenfolge erhalten bleibt. Genau hier habe ich das Problem, dass nicht immer alle Kästchen umbenannt werden. Aus diesem Problem heraus habe ich eine Überprüfung programmiert, welche nach der Erstellung durchlaufen wird. Jedoch scheint diese Überprüfung nicht stattzufinden. Hat jemand eine Lösung für mein Problem? Nachfolgend die Codes für die Erstellung der Kästchen und die Überprüfung: Für die Kontrollkästchen-Generierung: Code:
Sub CheckBoxenErstellen()Dim oobElement As OLEObject Dim lngZeile As Long Application.ScreenUpdating = False 'CheckBoxen erstellen ab Zeile 2 bis Ende For lngZeile = Tabelle4.Cells(5, 3).Value To Tabelle2.Cells(Rows.Count, Tabelle4.Cells(4, 3).Value).End(xlUp).Row 'CheckBox erstellen für laufende Zeile: Links=Spalte A, Oben=laufende Zelle Spalte A, 'Breite: Spalte A, Höhe=Zeilenhöhe laufende Zeile Set oobElement = Tabelle2.OLEObjects.Add(classType:="Forms.CheckBox.1", Link:=True, _ DisplayAsIcon:=False, Left:=Replace(Tabelle4.Cells(6, 3).Value, ",", "."), Top:=Tabelle2.Cells(lngZeile, 1).Top + 2, _ Width:=Replace(Tabelle4.Cells(7, 3).Value, ",", "."), Height:=Replace(Tabelle4.Cells(8, 3).Value, ",", ".")) 'Aufschrift löschen oobElement.Object.Caption = "" 'Checkbox beschriften oobElement.Name = "Chk_" & (lngZeile - 1) oobElement.Object.Value = True oobElement.Object.Value = False Next Inspect_Checkboxes.Checkbox_pruefen 'Aufrufen des Ueberpruefungsmoduls und dessen Sub Set oobElement = Nothing Application.ScreenUpdating = True End Sub
Für die Überprüfung: Code:
Sub Checkbox_pruefen()Dim oobElement As OLEObject Dim Checker As Integer Application.ScreenUpdating = False Checker = 0 Application.Wait (Now + TimeValue("0:00:01")) For Each oobElement In Tabelle2.OLEObjects If oobElement.progID = "Forms.CheckBox.1" Then If oobElement.Name <> "Chk_" & (oobElement.Index) Then Update_Modul.Update_all Else Checker = Checker + 1 End If End If Next If Checker = (Tabelle2.Cells(Rows.Count, Tabelle4.Cells(4, 3).Value).End(xlUp).Row) - 1 Then MsgBox "Aktualisieren abgeschlossen!" End If End Sub
Herzlichen Dank im Voraus für eure Bemühungen! Gruß Diesaster Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|