Fejlmeddelelse (STOP) fra Datavalidering til Combobox (ActiveX) i Excel2007
Jeg er helt ny i Visual Basic men har gennem koder fundet på nettet og optagede macroer fået bikset nedenstående kode sammen som laver en Kombinationsboks med Datavalideringsliste (så jeg får flere forslag vist i listen og kan begynde at skrive og den selv foreslår noget fra valideringslisten).Den virker rigtig fint, men når man taster noget der ikke står på valideringslisten tillader den desværre at der er fejl, selvom jeg under Datavalidering-Fejlmeddelelse har angivet STOP og fejlmeddelse.
Er der en måde jeg kan skrive en STOP-fejlmeddelelse (med forklaring) ind i min VB kode, så jeg er sikker på at der ikke bliver skrevet ugyldige navne?
Jeg håber at nogen kan hjælpe! :)
'=========================================
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim str As String
Dim cboTemp As OLEObject
Dim ws As Worksheet
Set ws = ActiveSheet
On Error GoTo errHandler
If Target.Count > 1 Then GoTo exitHandler
Set cboTemp = ws.OLEObjects("GodkendteNavne")
On Error Resume Next
If cboTemp.Visible = True Then
With cboTemp
.Top = 10
.Left = 10
.ListFillRange = ""
.LinkedCell = ""
.Visible = False
.Value = ""
End With
End If
On Error GoTo errHandler
If Target.Validation.Type = 3 Then
'if the cell contains a data validation list
Application.EnableEvents = False
'get the data validation formula
str = Target.Validation.Formula1
str = Right(str, Len(str) - 1)
With cboTemp
'show the combobox with the list
.Visible = True
.Left = Target.Left
.Top = Target.Top
.Width = Target.Width + 15
.Height = Target.Height + 5
.ListFillRange = ws.Range(str).Address
.LinkedCell = Target.Address
End With
cboTemp.Activate
End If
exitHandler:
Application.ScreenUpdating = True
Application.EnableEvents = True
Exit Sub
errHandler:
Resume exitHandler
End Sub
'====================================
'Optional code to move to next cell if Tab or Enter are pressed
'from code by Ted Lanham
Private Sub GodkendteNavne_KeyDown(ByVal _
KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
Select Case KeyCode
Case 9 'Tab fylder ud
Selection.autoFill Destination:=ActiveCell.Range("A1:G1"), Type:= _
xlFillSeries
ActiveCell.Range("A1:G1").Select
Case 13 'Enter
ActiveCell.Offset(1, 0).Activate
Case Else
'do nothing
End Select
End Sub
'====================================