• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Combobox opent 3x tegelijk

Status
Niet open voor verdere reacties.

1965Peter

Gebruiker
Lid geworden
20 jun 2016
Berichten
197
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:

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
 

Bijlagen

  • Voorbeeld verplaatsing Combobox.xlsx
    13 KB · Weergaven: 15
Een .xlsx bestand kan geen VBA code bevatten dus daar valt niks aan te zien en doet het probleem zich ook niet voor.
 
Laatst bewerkt:
Verkeerd opgeslagen, excuus. Zie hier het goede voorbeeldbestand.
 

Bijlagen

  • Voorbeeld verplaatsing Combobox.xlsm
    22,2 KB · Weergaven: 31
Op welke plekken opent hij nu wel?
Je zegt op 3 plekken, maar ik zie hem alleen op D1 verschijnen.

Zet voor de cellen waar hij moet kunnen verschijnen eens deze gegevensvalidatie aan:
Bereik.jpg
 
Laatst bewerkt:
De gegevensvalidatie heb ik met opzet verborgen, aangezien de combobox leidend is en er niet met de validatie gewerkt zal worden, door het ontbreken van de mogelijkheid van typen en aanvullen. Ik heb mijn screenshot in de bijlage gezet. Het lijkt alsof de combobox er 2x staat, maar er staan er ook nog eens 2 in elkaar. Ik wil inderdaad dat hij alleen in de cel met de validatie de combobox weergeeft, zoals hij voorheen deed.
 

Bijlagen

  • Knipsel.PNG
    Knipsel.PNG
    9,7 KB · Weergaven: 41
Het probleem zoals in je afbeelding zie ik hier niet gebeuren.
De box verschijnt keurig in D1.

Hoe heb je die gegevensvalidatie verborgen?
 
Laatst bewerkt:
Dan zal het aan mijn Excel of PC liggen, in ieder geval bedankt! Ik ga het uitzoeken en zal de topic sluiten.
 
De validatie kun je verbergen door het vakje "Vervolglijst in cel" uit te vinken. Ik weet niet precies wat het nut ervan is, maar in mijn geval komt het goed uit! De validatie is gelinkt aan die cel, maar je krijgt het pijltje voor de dropdown niet te zien.
 
Heb je bestandje ook hier getest maar ook hier werkt het zoals het moet ik zie maar 1 combobox
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan