Const CB_GETLBTEXTLEN = &H149
Сообщение CB_GETLBTEXTLEN получает длину текста элемента списка комбинированного окна(ComboBox) без завершающего нулевого символа. Таким образом, определяя длину строки, не забывайте добавлять завершающий нулевой символ vbNullChar
В успешном случае сообщение возвращает длину строки элемента списка без завершающего нулевого символа, в случае ошибки возвращается -1
' Определяем текст выбранного элемента списка комбинированного окна ' Вы должны создать элемент управления Combo1 ' и заполнить список Dim index As Long ' индекс выбранного элемента Dim itemtext As String ' текст выбранного элемента Dim textlen As Long ' длина текста выбранного элемента списка ' Определяем индекс выбранного элемента списка index = SendMessage(Combo1.hWnd, CB_GETCURSEL, ByVal 0, ByVal 0) ' Возможные варианты Select Case index Case -1 Debug.Print "Никакой элемент списка не выбран" Case Else ' Если есть выбранный элемент, ' то определяем длину текста элемента textlen = SendMessage(Combo1.hWnd, CB_GETLBTEXTLEN, ByVal index, ByVal 0) ' Создаем буфер для приема строки, включая завершающий нулевой символ itemtext = Space(textlen) & vbNullChar ' Отображаем текст textlen = SendMessage(Combo1.hWnd, CB_GETLBTEXT, ByVal index, ByVal itemtext) itemtext = Left(itemtext, textlen) Debug.Print "Выбранный элемент: "; itemtext End Select