Goedemorgen allen,
Bij het ontwerpen van een formulier heb ik gisteren een VBA codering gevonden waarmee je een combobox te voorschijn kunt halen wanneer je op een cel met een gegevensvalidatie klikt (dit had ik nodig om typen en aanvullen mogelijk te maken). Alles werkte naar wens, echter werkte het vanochtend niet meer. De combobox opent niet meer in de geselecteerde cel, maar hij opent maar liefst op 3 plekken. Ik heb er verder niet aan gewerkt en weet dus ook niet waar het aan kan liggen. De VBA code die achter het werkblad zit is:
Ik denk niet dat het met de code te maken heeft, vandaar dat ik het niet onder VBA geplaatst heb. Ik heb een voorbeeldbestandje gemaakt waar dit probleem zich ook voordoet. Wie kan mij uit de brand helpen?
Alvast erg bedankt voor de tijd en moeite.
Peter
Bij het ontwerpen van een formulier heb ik gisteren een VBA codering gevonden waarmee je een combobox te voorschijn kunt halen wanneer je op een cel met een gegevensvalidatie klikt (dit had ik nodig om typen en aanvullen mogelijk te maken). Alles werkte naar wens, echter werkte het vanochtend niet meer. De combobox opent niet meer in de geselecteerde cel, maar hij opent maar liefst op 3 plekken. Ik heb er verder niet aan gewerkt en weet dus ook niet waar het aan kan liggen. De VBA code die achter het werkblad zit is:
Code:
Sub Worksheet_BeforeDoubleClick _
(ByVal Target As Range, _
Cancel As Boolean)
Dim str As String
Dim cboTemp As OLEObject
Dim ws As Worksheet
Set ws = ActiveSheet
Set cboTemp = ws.OLEObjects("Combobox")
On Error Resume Next
With cboTemp
'clear and hide the combo box
.ListFillRange = ""
.LinkedCell = ""
.Visible = False
End With
On Error GoTo errHandler
If Target.Validation.Type = 3 Then
'if the cell contains
'a data validation list
Cancel = True
Application.EnableEvents = False
'get the data validation formula
str = Target.Validation.Formula1
str = Right(str, Len(str) - 1)
'for simple INDIRECT function (English)
' e.g. =INDIRECT(B2)
'will create dependent list of items
If Left(str, 4) = "INDI" Then
lSplit = InStr(1, str, "(")
str = Right(str, Len(str) - lSplit)
str = Left(str, Len(str) - 1)
str = Range(str).Value
End If
With cboTemp
'show the combobox with the list
.Left = Target.Left
.Top = Target.Top
.Width = Target.Width
.Height = Target.Height
.Visible = True
.ListFillRange = str
.LinkedCell = Target.Address
End With
cboTemp.Activate
'open the drop down list automatically
Me.ComboBox.DropDown
End If
errHandler:
Application.EnableEvents = True
Exit Sub
End Sub
'=========================================
Sub Combobox_LostFocus()
With Me.ComboBox
.Top = 10
.Left = 10
.Width = 0
.ListFillRange = ""
.LinkedCell = ""
.Visible = False
.Value = ""
End With
End Sub
'====================================
'Optional code to move to next cell
'if Tab or Enter are pressed
'from code by Ted Lanham
'***NOTE: if KeyDown causes problems,
'change to KeyUp
'Table with numbers for other keys
'such as Right Arrow (39)
Private Sub Combobox_KeyDown(ByVal _
KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
Select Case KeyCode
Case 9 'Tab
ActiveCell.Offset(0, 1).Activate
Case 13 'Enter
ActiveCell.Offset(1, 0).Activate
Case Else
'do nothing
End Select
End Sub
Ik denk niet dat het met de code te maken heeft, vandaar dat ik het niet onder VBA geplaatst heb. Ik heb een voorbeeldbestandje gemaakt waar dit probleem zich ook voordoet. Wie kan mij uit de brand helpen?
Alvast erg bedankt voor de tijd en moeite.
Peter