Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2011, 11:45   #1
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию перебрать все CheckBox

Сделал пингатор сетки, но не получается перебрать все CheckBox. На строчках CheckBox & i.BackColor = &H80FF80 выдает ошибку

Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Const PROCESS_QUERY_INFORMATION As Long = &H400
Private Const STILL_ACTIVE As Long = &H103


Private Sub CommandButton1_Click()
For i = 0 To 10
If CheckBox & i.Value = True Then

pid = Shell("ping " + CheckBox & i.Caption, 0)
hProcess = OpenProcess(PROCESS_QUERY_INFORMATI ON, 0, pid)
If hProcess <> 0 Then
Do
GetExitCodeProcess hProcess, exit_code
DoEvents
Loop Until exit_code <> STILL_ACTIVE
CloseHandle hProcess
End If
If exit_code = 0 Then
CheckBox & i.BackColor = &H80FF80

Else
CheckBox & i.BackColor = &H8080FF
End If
End If
Next i
End Sub
Aleksandr вне форума Ответить с цитированием
Старый 03.03.2011, 11:57   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Мне кажется, что уже тут должна быть ошибка:
CheckBox & i.Value
А я перебирал сегодня так в другой задаче:
Код:
For i = 1 To 40
Debug.Print Shapes("Check Box " & i).Name
Debug.Print Shapes("Check Box " & i).DrawingObject.Value
Next
P.S. Но как оказывается, с CheckBox такое не работает...
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 03.03.2011 в 12:09.
Hugo121 вне форума Ответить с цитированием
Старый 03.03.2011, 12:43   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Здесь есть примеры перебора чекбоксов, если они расположены на листе:
http://excelvba.ru/code/checkboxes

А где расположены чекбоксы в вашем случае? На форме?
EducatedFool вне форума Ответить с цитированием
Старый 03.03.2011, 12:59   #4
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Не могу проверить, попробуйте записать так
Код:
If exit_code = 0 Then
                Me.Controls("CheckBox" & i).BackColor = &H80FF80
            Else
                Me.Controls("CheckBox" & i).BackColor = &H8080FF
            End If
Да...наверное не в тему
это работает на форме
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499

Последний раз редактировалось VictorM; 03.03.2011 в 13:01.
VictorM вне форума Ответить с цитированием
Старый 03.03.2011, 13:00   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

У меня вот такой тест работает без сбоев.
На листе 2 "CheckBoxN" и 40 "Check Box N"
Код:
Sub tt()
For Each c In OLEObjects
Debug.Print c.Name
Debug.Print c.Object.Value
Next

For i = 1 To 2
Debug.Print Shapes("CheckBox" & i).Name
Debug.Print OLEObjects(i).Object.Value 'тут может и наврать, не то выдать - если порядковый номер не совпадёт с именем
Debug.Print OLEObjects(Shapes("CheckBox" & i).Name).Object.Value
Next


For i = 1 To 40
Debug.Print Shapes("Check Box " & i).Name
Debug.Print Shapes("Check Box " & i).DrawingObject.Value
Next
End Sub
P.S. Добавлено позже - это обрабатываются РАЗНЫЕ типы чекбоксов - из форм и ActiveX, поэтому методы получения Value немного разные.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 03.03.2011 в 17:15.
Hugo121 вне форума Ответить с цитированием
Старый 03.03.2011, 13:03   #6
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

Расположены на листе
Aleksandr вне форума Ответить с цитированием
Старый 03.03.2011, 13:04   #7
OrcXCyber
Web-программер
Пользователь
 
Аватар для OrcXCyber
 
Регистрация: 05.11.2009
Сообщений: 49
По умолчанию

а мне показалось, что тут при проверка i.BackColor ошибка...
&H80FF80
либо не хватает одно цифры в конце..
либо H - это не составляющая цвета
0123456789ABCDEF
не вижу здесь буквы H
BackColor скорей всего в hex формате пишется!

делайте выводы
OrcXCyber вне форума Ответить с цитированием
Старый 03.03.2011, 13:26   #8
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

Так если для одного CheckBox то работает, получается дело не в цвете. В этих строчках CheckBox & i.BackColor = &H80FF80

Else
CheckBox & i.BackColor = &H8080FF
ругается на &

Последний раз редактировалось Aleksandr; 03.03.2011 в 13:50.
Aleksandr вне форума Ответить с цитированием
Старый 03.03.2011, 14:19   #9
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

Если нет связи, то медлено пингуется. как увеличить скорость?
Aleksandr вне форума Ответить с цитированием
Старый 03.03.2011, 14:37   #10
Alex_ST
Пользователь
 
Аватар для Alex_ST
 
Регистрация: 04.12.2009
Сообщений: 28
По умолчанию

Aleksandr.
ну вам же уж указали на ошибки:
- надо писать не CheckBox & i.BackColor , а Shapes("Check Box " & i).BackColor
- само устанавливаемое значение BackColor вы пытаетесь задать в 16-ричном формате, а такого типа переменных VBA не понимает.
16-ричные значения задавайте если очень нужно через функцию Hex
Или если нужно цвет, то через RGB
Alex_ST вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как автоматически пометить все checkbox ? Aelxbor777 БД в Delphi 3 21.02.2010 00:58
Как программно перебрать в цикле все формы в приложении? chandrasecar Общие вопросы Delphi 18 11.09.2009 12:14
Как перебрать все числа из заданных цифр, чтобы цифры в числах не повторялись? TwiX Общие вопросы Delphi 7 17.08.2009 16:56
как перебрать все элементы на форме? Аlex Общие вопросы C/C++ 1 07.02.2009 03:46
перебрать все варианты перестановки строк sv_mix Помощь студентам 2 26.07.2008 17:48