Здравствуйте, есть около 1000 текстбоксов, но не те, которые VBA а те, которые как "надпись". Они уже имеют значение от 1 до 1000. У меня есть колонка с нужными значениями.
Вопрос: как автоматически заменить значения этих полей? Во вложении текстбоксы на первом листе, значения на втором.
Здравствуйте, есть около 1000 текстбоксов, но не те, которые VBA а те, которые как "надпись". Они уже имеют значение от 1 до 1000. У меня есть колонка с нужными значениями.
Вопрос: как автоматически заменить значения этих полей? Во вложении текстбоксы на первом листе, значения на втором.potapov14
Sub r_() For i = 1 To Sheets("Лист1").Shapes.Count Sheets("лист1").Shapes("textbox " & i).Select Selection.Characters.Text = Sheets("Лист2").Range("a1").Offset(i - 1, 0) Next End Sub
[/vba]
как-то так [vba]
Код
Sub r_() For i = 1 To Sheets("Лист1").Shapes.Count Sheets("лист1").Shapes("textbox " & i).Select Selection.Characters.Text = Sheets("Лист2").Range("a1").Offset(i - 1, 0) Next End Sub
Sub changeTextBoxes() Dim shp As Shape For Each shp In Worksheets(1).Shapes If shp.Type = msoTextBox Then shp.OLEFormat.Object.Text = Worksheets(2).Cells(Mid(shp.Name, 9), 1) Next shp End Sub
[/vba]
или как-то так: [vba]
Код
Sub changeTextBoxes() Dim shp As Shape For Each shp In Worksheets(1).Shapes If shp.Type = msoTextBox Then shp.OLEFormat.Object.Text = Worksheets(2).Cells(Mid(shp.Name, 9), 1) Next shp End Sub
Есть небольшая загвоздка: Это идеальное решение, если номер TextBox'а соответствует номеру ячейки. Но к сожалению в моём реальном примере не так. У меня текстбокс имеет формат названия "lbl_номер_1". Получается, что номер "TextBox'а" может несоответствовать формату lbl_номер_1. Есть ли возможность связывать именно имя текстбокса а не порядочный номер этого текстбокса?
Есть небольшая загвоздка: Это идеальное решение, если номер TextBox'а соответствует номеру ячейки. Но к сожалению в моём реальном примере не так. У меня текстбокс имеет формат названия "lbl_номер_1". Получается, что номер "TextBox'а" может несоответствовать формату lbl_номер_1. Есть ли возможность связывать именно имя текстбокса а не порядочный номер этого текстбокса?potapov14
Sub changeTextBoxes() For x = 2 To Sheets(2).Cells(Rows.Count, 2).End(xlUp).Row shName = Sheets(2).Cells(x, 2).Value shtext = Sheets(2).Cells(x, 1).Value Sheets(1).Shapes(shName).OLEFormat.Object.Text = shtext Next x End Sub
[/vba]
Добрый день. Попробуйте так [vba]
Код
Sub changeTextBoxes() For x = 2 To Sheets(2).Cells(Rows.Count, 2).End(xlUp).Row shName = Sheets(2).Cells(x, 2).Value shtext = Sheets(2).Cells(x, 1).Value Sheets(1).Shapes(shName).OLEFormat.Object.Text = shtext Next x End Sub