Я пытаюсь добавить символ Ом (Ω) в TextBox.Value при создании текстового поля на листе Excel.
Юникодное (шестнадцатеричное) значение символа Ом равно 2126.
Код ставит? вместо специального символа.
Set objTxtBx = ws.OLEObjects.Add(classtype:="Forms.TextBox.1")
With objTxtBx
.Name = "LG_tb_17_S" & x & "_NG"
.Left = lft
.Width = w
.Top = t2
.Object.BackStyle = 0
.Object.TextAlign = 2
.Object.SpecialEffect = 0
.Object.MultiLine = False
' .Object.Caption = "String " & x & " Measured"
.Object.AutoSize = False
.Object.BorderStyle = 1
.Object.Value = DataEntryForm.Controls(objTxtBx.Name).Value & ChrW(2126)
With .Object.Font
.Name = "Arial"
.Bold = True
.Size = 10
.Underline = False
End With
.Object.WordWrap = False
.Height = h
h = .Height
t = .Top
nT = .Top
t5 = .Top
End With
lft = lft + w
End If
Исправленный код:
Sub creatBox()
Set ws = Sheet1
x = 1
Set objTxtBx = ws.OLEObjects.Add(classtype:="Forms.TextBox.1")
With objTxtBx
.Name = "Test1"
.Left = 20
.Width = 100
.Top = 20
.Height = 30
.Object.BackStyle = 0
.Object.TextAlign = 2
.Object.SpecialEffect = 0
.Object.MultiLine = False
' .Object.Caption = "String " & x & " Measured"
.Object.AutoSize = False
.Object.BorderStyle = 1
.Object.Value = 1 & " " & ChrW(937)
With .Object.Font
.Name = "Arial"
.Bold = False
.Size = 14
.Underline = False
End With
.Object.WordWrap = False
End With
End Sub
Решение: Пришлось переместить .Object.Value = 1 & " " & ChrW(937)
ниже настройки .Font
, чтобы знак Ом работал все время. Не уверен, почему, если он был выше .Font
, он не отображался правильно, когда текстовое поле не было в фокусе.
Код решения:
Sub creatBox()
Set ws = Sheet1
Set objTxtBx = ws.OLEObjects.Add(classtype:="Forms.TextBox.1")
With objTxtBx
.Name = "Test1"
.Left = 20
.Width = 100
.Top = 20
.Height = 30
.Object.BackStyle = 0
.Object.TextAlign = 2
.Object.SpecialEffect = 0
.Object.MultiLine = False
' .Object.Caption = "String " & x & " Measured"
.Object.AutoSize = False
.Object.BorderStyle = 1
With .Object.Font
.Name = "Arial"
.Bold = False
.Size = 14
.Underline = False
End With
.Object.WordWrap = False
.Object.Value = 1 & " " & ChrW(937)
End With
End Sub