Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Basic / VBA


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Академик
Рейтинг: 8743
∙ повысить рейтинг »
Роман Селиверстов
Статус: Советник
Рейтинг: 3737
∙ повысить рейтинг »
Vasiliy83
Статус: Профессионал
Рейтинг: 2324
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Basic/VBA

Номер выпуска:1071
Дата выхода:11.12.2011, 08:00
Администратор рассылки:Vasiliy83 (Профессионал)
Подписчиков / экспертов:186 / 95
Вопросов / ответов:3 / 8

Консультация # 152619: Здравствуйте, Уважаемые Эксперты! Помогите, пожалуйста, с решением задачи: Используя датчик случайных чисел сформировать целочисленную матрицу и в каждой строке матрицы подсчитать число четных и нечетных элементов. Начало решения - ниже. Sub EX6() Dim x() As Integer, chet As Byte, nechet As Byte Dim n As Byte, m As Byte, i As Byte, ...


Консультация # 82632: Здравствуйте. В таблицы Word вставлены InlineShapes. Как программно подогнать их размеры под размеры ячеек таблицы? (Интересует ширина, т.к. высота подгоняется автоматически)....
Консультация # 90855: Здравствуйте! Помогите, надо чтоб программа запускала несколько ехе-шников поочередно (один за другим, а не все одновременно)... а потом закрывалась Пробовал так как в примере (см. ниже) но получается, что они все вместе запускаются.... а надо друг за другом... Прошу ответить побыстрее, мой проэкт из-за этого тормозится

Консультация # 152619:

Здравствуйте, Уважаемые Эксперты!
Помогите, пожалуйста, с решением задачи: Используя датчик случайных чисел сформировать целочисленную матрицу и в каждой строке матрицы подсчитать число четных и нечетных элементов. Начало решения - ниже.

Sub EX6()
Dim x() As Integer, chet As Byte, nechet As Byte
Dim n As Byte, m As Byte, i As Byte, j As Byte, p As Byte, s As Byte
Do
n = Application.InputBox("-число строк", Type:=1)
Loop Until n > 0
Do
m = Application.InputBox("-число столбцов", Type:=1)
Loop Until m > 0
ReDim x(1 To n, 1 To m)
Randomize
Cells.Clear
For i = 1 To n
For j = 1 To m
x(i, j) = 50 * Rnd - 25: Cells(i, j) = x(i, j)
Next j
Next i

'с этого момента начинаются проблемы

For j = 1 To m
chet = 0: nechet = 0
For i = 1 To n
If x(i, j) Mod 2 = 0 Then chet = chet + 1 Else nechet = nechet + 1
Next i
p = 0
s = 0
For i = 1 To n
If x(i, j) Mod 2 = 0 Then p = p + 1 Else s = s + 1
MsgBox "число четных элементов строке=" & p
MsgBox "число нечетных элементов строке=" & s
Next i
Next j
End Sub


Понимаю, что где-то ошибка, но, увы не знаю, где, какая и как её исправить. Повторюсь, что нужно подсчитать четные и нечетные элементы по строкам, но вот каким образом...
Надеюсь на вашу помощь.))

Дата отправки: 02.12.2008, 15:49
Вопрос задал: Amidala
Всего ответов: 2
Страница онлайн-консультации »


Консультирует 6a3uJI (8-й класс):

Здравствуйте, Amidala!
Вот исправленный вариант:

Sub EX6()
Dim x() As Integer, chet As Byte, nechet As Byte
Dim n As Byte, m As Byte, i As Byte, j As Byte, p As Byte, s As Byte
Do
n = Application.InputBox("-число строк", Type:=1)
Loop Until n > 0
Do
m = Application.InputBox("-число столбцов", Type:=1)
Loop Until m > 0
ReDim x(1 To n, 1 To m)
Randomize
Cells.Clear
For i = 1 To n
For j = 1 To m
x(i, j) = 50 * Rnd - 25: Cells(i, j) = x(i, j)
Next j
Next i

For j = 1 To n
chet = 0: nechet = 0
For i = 1 To m
If x(j, i) Mod 2 = 0 Then chet = chet + 1 Else nechet = nechet + 1
Next i
MsgBox "число четных элементов в " & j & " строке =" & chet
MsgBox "число нечетных элементов в " & j & " строке =" & nechet
Next j
End Sub

Консультировал: 6a3uJI (8-й класс)
Дата отправки: 02.12.2008, 16:38
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Тесленко Евгений Алексеевич (Практикант):

Здравствуйте, Amidala!
Собирать информацию о четности, можно в заполняющем цикле:

Код :
Sub EX6()
Const element$ = "Строка №     нечетных    четных" & vbCrLf
Dim x() As Integer, n As Byte, m As Byte, i As Byte, j As Byte, s$
Do:     n = Application.InputBox("-число строк", Type:=1):      Loop Until n > 0
Do:     m = Application.InputBox("-число столбцов", Type:=1):   Loop Until m > 0
ReDim x(1 To n, 1 To m + 1)
Randomize
Cells.Clear
For i = 1 To n
    For j = 1 To m
        x(i, j) = 50 * Rnd - 25:        Cells(i, j) = x(i, j)
        If x(i, j) Mod 2 = 0 Then x(i, m + 1) = x(i, m + 1) + 1
    Next
    s = s + Space(5) & i & vbTab & vbTab & m - x(i, m + 1) & vbTab & x(i, m + 1) & vbCrLf
Next
MsgBox element & s
End Sub
в этом случае ошибки могут создаваться только в одном месте, и их легче будет выловить.
Евгений.

Консультировал: Тесленко Евгений Алексеевич (Практикант)
Дата отправки: 02.12.2008, 19:41
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 82632:

Здравствуйте. В таблицы Word вставлены InlineShapes. Как программно подогнать их размеры под размеры ячеек таблицы? (Интересует ширина, т.к. высота подгоняется автоматически).

Дата отправки: 15.04.2007, 11:20
Вопрос задал: Михаил73
Всего ответов: 1
Страница онлайн-консультации »


Консультирует HookEst (Специалист):

Здравствуйте, Михаил73!
Перебираете или все ячейки таблицы, или все InlineShapes таблицы
и устанавливаете ширину Shape = ширине Cell

Sub Reidth()
Dim s
\'для каждого InlineShape из первой таблицы:
For Each s In Tables(1).Range.InlineShapes
s.Width = s.Range.Cells(1).Width
Next s
End Sub
Успехов

Консультировал: HookEst (Специалист)
Дата отправки: 16.04.2007, 10:10
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 90855:

Здравствуйте!

Помогите, надо чтоб программа запускала несколько ехе-шников поочередно (один за другим, а не все одновременно)... а потом закрывалась

Пробовал так как в примере (см. ниже) но получается, что они все вместе запускаются.... а надо друг за другом...

Прошу ответить побыстрее, мой проэкт из-за этого тормозится

Заранее спасибо!!!!!!

Дата отправки: 10.06.2007, 19:06
Вопрос задал: Молчанов Евгений
Всего ответов: 5
Страница онлайн-консультации »


Консультирует deleted (Практикант):

Здравствуйте, Молчанов Евгений!
Попробуйте так как в приложении. Недостаток - очень плохое управление прогами

Приложение:

Консультировал: deleted (Практикант)
Дата отправки: 10.06.2007, 20:16
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Тесленко Евгений Алексеевич (Практикант):

Здравствуйте, Молчанов Евгений!
Судя по листингу команду "на запуск" программы действителоно получают "поочередно". Проблема в том, что Ваша программа не ждет завершения выполнения команды и выполняет следующую.
Для решения необходимо организовать задержку:
получением от открывающейся кода открытия,
или запуском таймера
или просто обработкой циклов ....
И Ваш "проэкт" перестанет тормозится :).
Евгений.

Консультировал: Тесленко Евгений Алексеевич (Практикант)
Дата отправки: 11.06.2007, 00:25
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует DVS:

Здравствуйте, Молчанов Евгений!
А зачем писать именно на VB.
Гораздо проще же написать командный файл (bat или cmd). А в нём уже команды запуска ехе-шников, и они будут выполняться поочерёдно. После он сам и закроется, имеется ввиду командный файл.
Если необходимо именно на VB, то придётся искать пути проверки окончания работы 1-й программы, потом второй и т.д., например, при помощи Win API.
Или как вариант написать cmd файл и запускать его из своей программы.
Shell("C:\Temp\111.cmd", AppWinStyle.Hide) \'где 111.cmd Ваш командный файл
Application.Exit() \'не забыть добавить, чтобы Ваше приложение закрылось.
В командном файле пишем
"Path\Setup1.exe"
"Path\Setup2.exe"
"Path\Setup3.exe"
где Path путь к файлам.
Хотелось бы также внести некоторое уточнение к ответу Ualife.
У меня стоит Vista Home Premium, и строка Shell ("cmd /c " & exe1 & " && cmd /c " & exe2 & " && cmd /c " & exe3) не работает, а работает мой вариант.

Консультировал: DVS
Дата отправки: 11.06.2007, 00:31
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Alec Perle (Студент):

Здравствуйте, Молчанов Евгений!
Для "замораживания" программы на время выполнения другой воспользуйтесь функциями API.
В приложении функция SynchronizeShell, вызывая которую вместо Shell, Вы получете необходимый эффект.

Приложение:

Консультировал: Alec Perle (Студент)
Дата отправки: 11.06.2007, 02:52
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует HookEst (Специалист):

Здравствуйте, Молчанов Евгений!
Насколько я понял у Вас VB.NET, так вот аргументы Shell для .NET:

Public Function Shell( _
ByVal Pathname As String, _
Optional ByVal Style As AppWinstyle="AppWinStyle.MinimizedFocus," _
Optional ByVal Wait As Boolean = False, _
Optional ByVal Timeout As Integer = -1 _
) As Integer

видите? третий параметр Wait, он показывает нужно ли ждать завершения программы, а четвертый параметр TimeOut - указывает сколько времени ждать, если -1(по умолчанию) то управление в программу может и не вернутся никогда.
просто поставьте третьим параметром True:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Shell("Setup1.exe", AppWinStyle.NormalFocus, True)
Shell("Setup2.exe", AppWinStyle.NormalFocus, True)
Shell("Setup3.exe", AppWinStyle.NormalFocus, True)
End
End Sub
Успехов.

Консультировал: HookEst (Специалист)
Дата отправки: 14.06.2007, 06:42
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное