powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как в форме Excell перебрать все текстовые поля
12 сообщений из 12, страница 1 из 1
Как в форме Excell перебрать все текстовые поля
    #36472926
p2x4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу натолкнуть на решение такой задачки:
на листе присутствует ряд текстовых полей, как их все вызвать в цикле для анализа и изменения значений?
...
Рейтинг: 0 / 0
Как в форме Excell перебрать все текстовые поля
    #36472997
Dophin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
p2x4,

dim cell as range
for each cell in range("a1:a10")
бла бла бла
next cell
...
Рейтинг: 0 / 0
Как в форме Excell перебрать все текстовые поля
    #36473297
p2x4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dophinp2x4,

dim cell as range
for each cell in range("a1:a10")
бла бла бла
next cell

Увы, не все так просто. Имеются ввиду элементы управления типа поле, а не ячейки на листе.
...
Рейтинг: 0 / 0
Как в форме Excell перебрать все текстовые поля
    #36473355
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
p2x4, перебирайте коллекции раб. листа OLEObjects или Shapes, проверяя имена объектов.
...
Рейтинг: 0 / 0
Как в форме Excell перебрать все текстовые поля
    #36473364
p2x4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то типа:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
With WorkSheets( 1 ) 
   For Each ss in .Shapes 
      If ss.Type = msoOLEControlObject Then 
        Debug.Print ss.Name 
        'здесь ss - это элемент управления на листе 
      End if 
   Next ss 
End With

вопрос как из полученой выборки выделить поля?
...
Рейтинг: 0 / 0
Как в форме Excell перебрать все текстовые поля
    #36473373
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
p2x4,

If ss.Name Like "TextBox" & "#" Then Stop, например
...
Рейтинг: 0 / 0
Как в форме Excell перебрать все текстовые поля
    #36473383
p2x4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vlth,
думал об этом, не все имена содержат textbox
...
Рейтинг: 0 / 0
Как в форме Excell перебрать все текстовые поля
    #36473403
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
p2x4, если их не переименовывать, то как обратиться к ним иначе, я не знаю.
...
Рейтинг: 0 / 0
Как в форме Excell перебрать все текстовые поля
    #36474068
p2x4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vlth,
похоже прийдется переименовывать
...
Рейтинг: 0 / 0
Как в форме Excell перебрать все текстовые поля
    #36475167
-nail-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
For Each ctl In Worksheets("1").OLEObjects
Debug.Print ctl.Name
Debug.Print ctl.OLEType
if ctl.OLEType = 2 then
msgbox ctl.name
end if
Next ctl
End Sub


думаю что OLEType для текстовых полей одинаковый (=2)
...
Рейтинг: 0 / 0
Как в форме Excell перебрать все текстовые поля
    #36475522
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-nail-думаю что OLEType для текстовых полей одинаковый (=2)
-nail-, напрасно так думаете. Из хелпа VBA:
OLEType Property
See AlsoApplies ToExampleSpecificsReturns the OLE object type. Can be one of the following XlOLEType constants: xlOLELink or xlOLEEmbed. Returns xlOLELink if the object is linked (it exists outside of the file), or returns xlOLEEmbed if the object is embedded (it's entirely contained within the file). Read-only Long.

xlOLELink = 0
xlOLEEmbed = 1

Что такое OLEType = 2, нигде не сказано, но для всех элементов управления на листе он одинаков .
...
Рейтинг: 0 / 0
Как в форме Excell перебрать все текстовые поля
    #36475566
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
p2x4, используйте св-во объекта ProgID:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
With WorkSheets( 1 ) 
   For Each ss in .Shapes 'или OLEObjects
      If ss.Type = msoOLEControlObject Then 
        Debug.Print ss.ProgID
        'здесь ss - это элемент управления на листе 
        If ss.ProgID Like "*TextBox*" Then
         ...  
        end if
      End if 
   Next ss 
End With
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как в форме Excell перебрать все текстовые поля
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]