Folosesc următorul cod VBA pentru a permite completarea automată când tastesc în lista derulantă folosind o casetă combinată.
Acest cod dezactivează funcțiile „Anulare” și „Refacere” de pe foile la care este aplicat codul VBA. Codul VBA poate fi modificat pentru a permite aceste funcții?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Actualizare până la Extendoffice: 2018 / 9 / 21
Dim xCombox ca OLEObject
Dim xStr As String
Dim xWs ca fișă de lucru
Dim xArr
Set xWs = Application.ActiveSheet
La data de eroare CV următoare
Setați xCombox = xWs.OLEObjects(„TempCombo”)
Cu xCombox
.ListFillRange = ""
.LinkedCell = ""
.Vizibil = Fals
Se termina cu
Dacă Target.Validation.Type = 3 Atunci
Target.Validation.InCellDropdown = Fals
Anulare = Adevărat
xStr = Target.Validation.Formula1
xStr = Dreapta(xStr, Len(xStr) - 1)
Dacă xStr = "" Atunci Ieșiți din sub
Cu xCombox
.Vizibil = Adevărat
.Left = Target.Left
.Top = Target.Top
.Width = Target.Width + 5
.Înălțime = țintă.Înălțime + 5
.ListFillRange = xStr
Dacă .ListFillRange = "" Atunci
xArr = Split(xStr, ",")
Me.TempCombo.List = xArr
Final, dacă
.LinkedCell = Target.Address
Se termina cu
xCombox.Activare
Me.TempCombo.DropDown
Final, dacă
End Sub
Private Sub TempCombo_KeyDown(ByVal KeyCode ca MSForms.ReturnInteger, ByVal Shift ca întreg)
Selectați Case KeyCode
Cauza 9
Application.ActiveCell.Offset(0, 1).Activate
Cauza 13
Application.ActiveCell.Offset(1, 0).Activate
Selectare sfârșit
End Sub