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

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

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

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

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

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

Сделал , но все равно не работает.
Код:
Private Sub CommandButton1_Click()
For i = 1 To 8

If CheckBox & i.Value = True Then

    pid = Shell("ping " + CheckBox & i.Caption, 0)
 hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 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
'CheckBox1.BackColor = &H80FF80
Shapes("Check Box " & i).BackColor = &H80FF80
 Else
Shapes("Check Box " & i).BackColor = &H8080FF
  
  End If
Else
Shapes("Check Box " & i).BackColor = &HFFFFFF
  End If
Next i
  
End Sub
Я прошу прощения, но что-то я не врублюсь где ошибка.
Aleksandr вне форума Ответить с цитированием
Старый 03.03.2011, 15:03   #12
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

Я сделал так
Код:
Private Sub CommandButton1_Click()
For i = 0 To 8
Debug.Print Shapes("CheckBox " & i).Name
Debug.Print Shapes("CheckBox " & i).DrawingObject.Value

'If Shapes("CheckBox " & i).Value = True Then

    pid = Shell("ping " + Shapes("CheckBox " & i).Caption, 0)
 hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 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
'CheckBox1.BackColor = &H80FF80
Shapes("CheckBox " & i).BackColor = &H80FF80
 Else
Shapes("CheckBox " & i).BackColor = &H8080FF
End If
Next i
  
End Sub
Прошу прощения, но я что-то не врублюсь. Что я не так делаю?

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

Выдает ошибку Next without For
Aleksandr вне форума Ответить с цитированием
Старый 03.03.2011, 15:55   #14
Alex_ST
Пользователь
 
Аватар для Alex_ST
 
Регистрация: 04.12.2009
Сообщений: 28
По умолчанию

Блин, не люблю я без Option Explicit работать...
Фиг найдёшь, что Ёксельский бэйсик там себе напридумывал если переменные не объявлены...
Но сразу бросается в глаза вот что:
Как у вас чекбоксы названы? Я так понимаю, что CheckBox1 ... CheckBox8 ?
а кодом вы пытаетесь обращаться к CheckBox 1 ... CheckBox 8 (там пробел лишний перед закрывающей кавычкой стоит:
написано "CheckBox " & i
а должно быть "CheckBox" & i
Это я сам проглядел - скопировал выражение из первого поста Hugo121, а пробела не увидал.

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

Описал переменную
Option Explicit
Dim i As Integer

Все равно не работает

Выдает Переменная pid не определена

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

Да, у меня там и такие чекбоксы были. И никогда с 0 они не начинались! Хотя вероятно вручную можно и обозвать...
А pid'а определите
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 03.03.2011, 16:20   #17
Alex_ST
Пользователь
 
Аватар для Alex_ST
 
Регистрация: 04.12.2009
Сообщений: 28
По умолчанию

Option Explicit надеюсь в декларациях модуля?

И ваша программа не ругается на неназначенные переменные pid, hProcess и прочее? Такого быть не может! Или у вас эти переменные определены как глобальные?

Хоть на какой строке вылетает?
Вообще не хочет запускаться что ли? Говорит "Next without For"?
Тогда заремарьте всё от
Код:
Debug.Print Shapes("CheckBox " & i).Name
до строки перед
Код:
If exit_code = 0 Then
, задавайте в ручную разные значения exit_code и проверьте функционирование фрагмента окраски чекбоксов

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

Вот мой модуль
Код:
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

Option Explicit
Dim i As Integer
Dim pid As Long
Dim hProcess As Long

Private Sub CommandButton2_Click()
For i = 1 To 2
If Shapes("CheckBox" & i).Value = True Then

    pid = Shell("ping " + Shapes("CheckBox" & i).Caption, 0)
 hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 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
'CheckBox1.BackColor = &H80FF80
Shapes("CheckBox" & i).BackColor = &H80FF80
 Else
Shapes("CheckBox" & i).BackColor = &H8080FF
End If
Else
Shapes("CheckBox" & i).BackColor = &HFFFFFF
End If

Next
End Sub
Выдает Variable not defined
Если пишу без
Dim pid As Long
Dim hProcess As Long
то ошибка выскакивает в строчках
pid = Shell("ping " + Shapes("CheckBox" & i).Caption, 0)
hProcess = OpenProcess(PROCESS_QUERY_INFORMATI ON, 0, pid)

Последний раз редактировалось Aleksandr; 03.03.2011 в 16:26.
Aleksandr вне форума Ответить с цитированием
Старый 03.03.2011, 16:27   #19
Alex_ST
Пользователь
 
Аватар для Alex_ST
 
Регистрация: 04.12.2009
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Да, у меня там и такие чекбоксы были. И никогда с 0 они не начинались! Хотя вероятно вручную можно и обозвать...
А pid'а определите
что-то я не въеду: разве в именах каких бы то ни было объектов могут быть пробелы? А с цифры их имя разве может начинаться?
Alex_ST вне форума Ответить с цитированием
Старый 03.03.2011, 16:29   #20
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

У меня на одном тестовом листе были разные чекбоксы - из форм и ActiveX. У них такие разные названия и разные методы получения Value оказывается.
А цифра в конце, это в смысле что первый не чекбокс0, а чекбокс1

Да вот чекбоксы с пробелами - http://www.planetaexcel.ru/docs/foru...st_205116.xlsm
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 03.03.2011 в 16:34.
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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