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

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

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

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

Код: 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
16.02.2010, 18:42
    #36473373
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в форме Excell перебрать все текстовые поля
p2x4,

If ss.Name Like "TextBox" & "#" Then Stop, например
...
Рейтинг: 0 / 0
16.02.2010, 18:45
    #36473383
p2x4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в форме Excell перебрать все текстовые поля
vlth,
думал об этом, не все имена содержат textbox
...
Рейтинг: 0 / 0
16.02.2010, 18:49
    #36473403
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в форме Excell перебрать все текстовые поля
p2x4, если их не переименовывать, то как обратиться к ним иначе, я не знаю.
...
Рейтинг: 0 / 0
17.02.2010, 08:53
    #36474068
p2x4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в форме Excell перебрать все текстовые поля
vlth,
похоже прийдется переименовывать
...
Рейтинг: 0 / 0
17.02.2010, 14:25
    #36475167
-nail-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в форме Excell перебрать все текстовые поля
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
17.02.2010, 15:59
    #36475522
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в форме Excell перебрать все текстовые поля
-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
17.02.2010, 16:12
    #36475566
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в форме Excell перебрать все текстовые поля
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
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как в форме Excell перебрать все текстовые поля / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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