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 Elementrgröße setzen
#1
Hey Leute,

zum Feierabend habe ich hier nochmal eine kniffelige Aufgabe.

Ich habe einige ActiveX Elemente auf einem Arbeitsblatt. Damit habe ich immense Probleme, wenn ich die Datei über einen Beamer abspiele. Dann verändert sich die Größe, Schriftgröße, Position usw.

Ich habe nun so lange ausprobiert, bis ich eine Lösung gefunden habe. Allerdings funktioniert diese nicht überall.

Ich habe 2 Checkboxen. Wenn ich auf die eine Checkbox klicke werden alle Elemente auf dem Arbeitsblatt neu gesized was auch prima funktioniert.
Auf der zweiten Checkbox liegt im Prinzip exakt die gleiche Logik - dort wird die Checkbox beim Klick aber immer kleiner.

Wo liegt mein Fehler?

Das hier ist die funktionierende Checkbox, die alle Elemente neu sized:
Code:
Private Sub CheckBox26_Click()
Application.ScreenUpdating = False
If CheckBox26.Value = True Then
ToggleButton24.Value = False
End If
SummeAuszahlungenAusblenden
If ToggleButton23.Value = False Then
If CheckBox26.Value = True Then
ComboBox21.Visible = True
Rows("26:38").EntireRow.Hidden = False
ComboBox21_Change
For i = 4 To 6
Columns(i).Hidden = False
Next i
Else: ComboBox21.Visible = False
Rows("26:38").EntireRow.Hidden = True
Worksheets("Input").Range("Z30").Value = "0"
For i = 4 To 6
Columns(i).Hidden = True
Next i
End If
Else:
If CheckBox26.Value = True Then
ComboBox21.Visible = True
Rows("37:39").EntireRow.Hidden = False
ComboBox21_Change
If CheckBox26.Value = False Then
Rows("37:39").EntireRow.Hidden = True
Call LinksVerschieben
End If
Else: ComboBox21.Visible = False
Rows("37:38").EntireRow.Hidden = True
Worksheets("Input").Range("Z30").Value = "0"

End If
End If
Call SetSize
   Application.ScreenUpdating = True
End Sub

Und das hier ist die, die nichts tut:
Code:
Private Sub CheckBox21_Click()
   Application.ScreenUpdating = False
   SummeAuszahlungenAusblenden
If ToggleButton23.Value = False Then
If CheckBox21.Value = True Then
ComboBox25.Visible = True
Rows("39:51").EntireRow.Hidden = False
ComboBox25_Change
SummeEinblenden
Else: ComboBox25.Visible = False
Rows("39:51").EntireRow.Hidden = True
Worksheets("Input").Range("Z48").Value = "0"
End If
SummeEinblenden
Else:
If CheckBox21.Value = True Then
ComboBox25.Visible = True
Rows("51:52").EntireRow.Hidden = False
ComboBox25_Change
Else: ComboBox25.Visible = False
Rows("51:52").EntireRow.Hidden = True
Worksheets("Input").Range("Z48").Value = "0"
SummeEinblenden
End If
SummeEinblenden
End If

Call SetSize

    Application.ScreenUpdating = True
End Sub

Die SetSize:
Code:
Sub SetSize()
Application.ScreenUpdating = False

   Call SetSizeGeneral
   If ToggleButton24.Value = True And CheckBox26.Value = True Then
   Call LinksVerschieben
   ElseIf CheckBox26.Value = True Then
   Call RechtsVerschieben
   ElseIf CheckBox26.Value = False Then
   Call LinksVerschieben
   End If   
   
    Application.ScreenUpdating = True
   
End Sub

Falls ihr die LinksVerschieben / RechtsVerschieben sehen wollt sagt Bescheid - die sind aber etwas größer.
Antworten Top
#2
Für mich sieht es so aus, als würde er in der Private Sub CheckBox21_Click() überhaupt nicht bis zur Stelle Call SetSize kommen... obwohl diese außerhalb aller Schleifen steht und eigentlich durchlaufen werden müsste.

Ich hatte auch schon die Vermutung, dass es an dem ActiveX Bug liegt und durch die Spalten behoben wird, die zwischendrin aus/eingeblendet werden.
Aber Spalten ein/ausblenden und dann die SetSize aufrufen hat auch nichts geändert.

CheckBox26_Click tut genau das was es soll und setzt alle Elementgrößen neu.
Wieso funktioniert das nicht auch mit der anderen Checkbox?
Antworten Top
#3
Statt

Code:
If CheckBox26.Value = True Then
ToggleButton24.Value = False
End If

Schreiben Programmierer:

Code:
ToggleButton24 = Not CheckBox26
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • StrammerMax
Antworten Top
#4
Danke für den Tipp - bringt mich bei der eigentlichen Thematik aber mal wieder nicht weiter ;)

Ich habe es jetzt provisorisch so geregelt, dass ich beim klick jeder CheckBox die Checkbox die funktioniert einmal aufrufe (Value ändern und wieder zurück ändern).

Ist aber extrem inperformant. Dauert dann 3-4 Sekunden bis das alles einmal durch ist. Zudem klappt er Spalten auf/zu was nicht gerade professionell aussieht.

Ich wäre euch also weiterhin sehr verbunden, wenn jemand meinen Fehler findet.
Antworten Top
#5
Ich glaube so langsam, dass es einfach nur ein Bug ist... ich bin schon einen ganzen Tag daran und habe schon zig Wege probiert... aber es funktioniert einfach nichts, obwohl es eigentlich funktionieren müsste.
Antworten Top
#6
Hier geht alles blitzschnell;

Ohne Datei keine Ahnung
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#7
Habe es jetzt.... das ist wieder mal so eine Kleinigkeit bei der man fast verzweifelt...

Das hier funktioniert nicht:
Code:
Private Sub CheckBox1_click()
Call SetSize
End Sub
Und das hier wiederum funktioniert:
Code:
Private Sub Zwischenschritt()
Call SetSize
End Sub

Private Sub CheckBox1_click()
Call Zwischenschritt
End Sub
Wieso / weshalb / warum? Frag mich nicht...
Antworten Top


Gehe zu:


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