wie kann ich bei einer großen Menge von Steuerelementen in VBA ein nicht sichtbares Steuerelement wiederfinden?
Danke
Private Sub CommandButton1_Click()
Dim objElement As Control
For Each objElement In UserForm1.Controls
If objElement.Visible = False Then
MsgBox objElement.Name
End If
Next
End Sub
GrußSub UnsichtbareShapes()
Dim wks As Worksheet, oShape As Shape, bWasGefunden As Boolean
'Shapes mit Status Visible = False in Tabellenblatt finden
Set wks = ActiveSheet
bWasGefunden = False
For Each oShape In wks.Shapes
If oShape.Visible = False Then
With oShape
Select Case MsgBox("Element-Name: " & .Name _
& vbLf & "Top-Left Cell: " & .TopLeftCell.Address _
& vbLf & vbLf & "Objekt einblenden?", _
vbInformation + vbYesNoCancel, "Unsichtbare Shape-Objekte finden")
Case vbYes
.Visible = True: bWasGefunden = True
Case vbNo
bWasGefunden = True
Case vbCancel
bWasGefunden = True: Exit For
End Select
End With
End If
Next
If bWasGefunden = False Then MsgBox "Es gibt keine unsichtbaren Elemente"
End Sub
Sub UnsichtbareUF()
Dim UF As UserForm, oControl As Control, bWasGefunden As Boolean
'Elemente mit Eigenschaft Visible=False in Userform finden
Set UF = UserForm1
For Each oControl In UF.Controls
If oControl.Visible = False Then
bWasGefunden = True
With oControl
If MsgBox("Element-Name: " & .Name, _
vbInformation + vbOKCancel, _
"Unsichtbare Steuerelemente - Userform1") = vbCancel Then
Exit For
End If
End With
End If
Next
If bWasGefunden = False Then MsgBox "Es gibt keine unsichtbaren Elemente"
End Sub
Sub Ueberlappend_UF()
Dim UF As UserForm, sMsgtext As String, bWasGefunden As Boolean
Dim intJ As Long, intI As Long, oControl_I As Control, oControl_J As Control
Dim arrInfo()
'Überlappende Elemente in Userform finden
Set UF = UserForm1 'Name ggf anpassen
ReDim arrInfo(1 To UF.Controls.Count, 1 To 5)
For Each oControl_I In UF.Controls
intJ = intJ + 1
arrInfo(intJ, 1) = oControl_I.Name
arrInfo(intJ, 2) = oControl_I.Top
arrInfo(intJ, 3) = oControl_I.Left
arrInfo(intJ, 4) = oControl_I.Height
arrInfo(intJ, 5) = oControl_I.Width
Next
For intI = 1 To UF.Controls.Count - 1
For intJ = intI + 1 To UF.Controls.Count
If (arrInfo(intJ, 2) >= arrInfo(intI, 2) _
And arrInfo(intJ, 2) = arrInfo(intI, 3) _
And arrInfo(intJ, 3) = arrInfo(intJ, 2) _
And arrInfo(intI, 2) = arrInfo(intJ, 3) _
And arrInfo(intI, 3) "" Then
sMsgtext = "Element-Name: " & arrInfo(intI, 1) _
& vbLf & "Positon - Top : " & arrInfo(intI, 2) _
& vbLf & "Positon - Left: " & arrInfo(intI, 3) _
& vbLf & "überlappt mit folgenden Elementen" & sMsgtext
If MsgBox(sMsgtext, vbInformation + vbOKCancel, _
"Überlappende Steuerelemente - Userform1") = vbCancel Then
Exit For
End If
End If
sMsgtext = ""
Next
If bWasGefunden = False Then MsgBox "Es gibt keine überlappenden Elemente"
End Sub
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen