Значения ComboBox могут быть только теми, что есть в их списке. Обратите внимание, что получение свойства .Value
ячеек получает их базовое значение (например, .57) вместо их отформатированного значения отображения (например, 57%), что, вероятно, является причиной возникновения этой проблемы. К сожалению, вам необходимо загрузить значения в массив, а затем отформатировать эти значения в желаемом отображаемом тексте, а затем загрузить их в список выпадающего списка. На самом деле я не могу придумать решения с одной строкой, но что-то вроде этого должно сработать (и тогда нет необходимости в событии изменения):
Private Sub UserForm_Initialize()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("B16.5 & B16.47 SERIES A")
Dim aLists(1 To 6, 1 To 2) As Variant
'This is the combobox 'This is the range where the combobox gets its values
Set aLists(1, 1) = Me.ComboBox1: Set aLists(1, 2) = ws.Range("R15:R16")
Set aLists(2, 1) = Me.ComboBox2: Set aLists(2, 2) = ws.Range("U5:U9")
Set aLists(3, 1) = Me.ComboBox3: Set aLists(3, 2) = ws.Range("B5:B40")
Set aLists(4, 1) = Me.ComboBox4: Set aLists(4, 2) = ws.Range("R5:R12")
Set aLists(5, 1) = Me.ComboBox5: Set aLists(5, 2) = ws.Range("T5:T10")
Set aLists(6, 1) = Me.ComboBox6: Set aLists(6, 2) = ws.Range("R18:R19")
'Loop through your list of comboboxes and load values
Dim aTemp As Variant
Dim i As Long, j As Long
For i = LBound(aLists, 1) To UBound(aLists, 1)
Select Case aLists(i, 1).Name
'Specify the comboboxes that should have the percent format here
Case "ComboBox5"
aTemp = aLists(i, 2).Value
For j = LBound(aTemp, 1) To UBound(aTemp, 1)
aTemp(j, 1) = Format(aTemp(j, 1), "00%")
Next j
aLists(i, 1).List = aTemp
'Can use this same method to apply different formats as well to different comboboxes, add additional conditions here
'Otherwise just load the values as is
Case Else
aLists(i, 1).List = aLists(i, 2).Value
End Select
Next i
End Sub
Снимок экрана с результатом:
![enter image description here](https://i.stack.imgur.com/wq9aT.png)