Доступ к VBA - изменение значения TextBox из функции (ByRef)
Я пытаюсь написать подпрограмму, которая получит два параметра - текстовое поле в форме и текст. Я хочу, чтобы функция добавляла текст в любое текстовое поле.
Sub AppendTextBox([any textbox in my form], text As String)
[code that appends the text parameter to the textbox]
End Sub
Обратите внимание, что я не пытаюсь добавить текст к определенному текстовому полю, а создать функцию, которая может принимать любое текстовое поле в форме и добавлять его к любому тексту.
Спасибо за вашу помощь.
2 ответа
Решение
Я нашел ответ, и это намного проще, чем я, хотя это:
Private Sub AAA(A)
A.Value = "Desired text"
End Sub
Или, если вы хотите добавить:
Private Sub AAA(A)
A.Value = A.Value & vbnewline & "Desired text"
End Sub
Привет, Зефрам, тебе удалось найти решение для этого? У меня есть один, но немного тяжелый, потому что он использует петли. Если у вас есть лучше, дайте мне знать.
Private Function change_TextBox2(altera As String, textbox As ctl, valor As Variant)
Dim ctl As Control
If altera = "Popula" Then
For Each ctl In Me.Controls
With ctl
If (InStr(.Name, textbox)) > 0 Then
.Value = valor
End If
End With
Next ctl
ElseIf altera = "hide" Then
For Each ctl In Me.Controls
With ctl
If (InStr(.Name, textbox)) > 0 Then
.Visible = False
End If
End With
Next ctl
End If
End Function
Может быть выполнено:
dim appendTxt as String: appendTxt = "appended text"
dim ws as Worksheet: for each ws in ActiveWorkbook.Worksheets
dim shape as Shape: for each shape in ws.Shapes
if shape.Type = msoTextBox then
'you can move this code parameterized to a separate function then as req by OP:
with shape.TextEffect: .Text = .Text & appendTxt
end if
next shape
next ws