Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Problem bei Überprüfung des Checkboxnamens via Makro

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Problem bei Überprüfung des Checkboxnamens via Makro (697 mal gelesen)
Diesaster
Mitglied
Student


Sehen Sie sich das Profil von Diesaster an!   Senden Sie eine Private Message an Diesaster  Schreiben Sie einen Gästebucheintrag für Diesaster

Beiträge: 61
Registriert: 05.11.2015

Microsoft Excel 2016

erstellt am: 30. Jul. 2018 07:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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 >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz