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

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


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

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

Чемпионы рейтинга экспертов в этой рассылке

Гаряка Асмик
Статус: Специалист
Рейтинг: 3969
∙ повысить рейтинг »
Vasiliy83
Статус: Бакалавр
Рейтинг: 1700
∙ повысить рейтинг »
Megaloman
Статус: Профессионал
Рейтинг: 1267
∙ повысить рейтинг »

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

Номер выпуска:1027
Дата выхода:31.05.2010, 23:00
Администратор рассылки:Калашников О.А., Руководитель
Подписчиков / экспертов:228 / 84
Вопросов / ответов:6 / 7

Вопрос № 178638: В небоскребе N этажей и всего один подъезд; на каждом этаже по три квартиры; лифт может останавливаться только на нечетных этажах. Человек садится в лифт и набирает номер квартиры M. На какой этаж лифт должен доставить пассажира? 1.В работ...


Вопрос № 178642: Даны две матрицы А(5,5); В(6,6). Уменьшить макси-мальный элемент в каждой из этих матриц в 10 раз. 1.В работе необходимо выполнить алгоритмические задачи с использованием базовых типов данных и основных операторов языка программирования VBA. Вопрос № 178645: Написать процедуру, которая формирует двумерный массив А по следующему алгоритму: изменяется от 0 до N, j изменяется от 0 до M. 1.В работе необходимо выполнить алгоритмические задачи с использованием базовых типов данных и основных операт...
Вопрос № 178646: В файле хранится произвольный текст. Группы символов, разделенные пробелом и не содержащие пробелов внутри себя, будем называть словами. Удалить из каждого слова текста все последующие вхождения его первой буквы. Результат записать в новый файл. <...
Вопрос № 178647: Дан список, состоящий из названий книг, фамилий авторов, издательства и года изданий. Упорядочить список по издательствам. Вывод на экран сформировать в виде таблицы. Для ввода данных использовать форму и элементы управления. 1.В работе необхо...
Вопрос № 178662: Подскажите скрипт для подключения библиотеки SHDocVw.dll (Microsoft.internet.control), что она даёт? Каков лучше эффет чтобы узнать загружена ли страница ВЭБа, от строк Do Until IE.readyState = READYSTATE_COMPLETE DoEvents Loop ...

Вопрос № 178638:

В небоскребе N этажей и всего один подъезд; на каждом этаже по три квартиры; лифт может останавливаться только на нечетных этажах. Человек садится в лифт и набирает номер квартиры M. На какой этаж лифт должен доставить пассажира?


1.В работе необходимо выполнить алгоритмические задачи с использованием базовых типов данных и основных операторов языка программирования VBA.
2. Задачи прислать в виде файлов Word либо Excel, с кодом программы, выполненном в среде VBA соответствующего компонента Office.
3. В программах обязательно наличие комментариев, поясняющих основные алгоритмические шаги.

Отправлен: 26.05.2010, 00:01
Вопрос задал: Ананьев Рудольф Олегович, 2-й класс
Всего ответов: 2
Страница вопроса »


Отвечает Megaloman, Профессионал :
Здравствуйте Ананьев Рудольф Олегович! Вот код макроса, Excel-файл можно загрузить z178638.xls (25.5 кб).
Код:
Sub z178638()

Dim N As Integer ' Количество этажей
Dim M As Integer ' Номер квартиры
Dim Nroom As Integer ' Кол-во квартир на этаже
Dim Floor As Integer ' Номер этажа для указанной квартиры

Nroom = 3 ' Количество квартир на этаже

N = CInt(InputBox("Введите количество этажей")) ' Ввод данных и их преобразование из символьного к целому типу
M = CInt(InputBox("Введите номер квартиры"))

If N > 0 And M <= N * Nroom Then ' Если число этаже й и номер квартиры корректно

Floor = Int((M + Nroom-1) / Nroom) 'Подсчёт номера этажа
If (Floor Mod 2) = 0 Then ' Если этаж четный
Floor = Floor + 1 ' Вычисляем верхний нечётный этаж

If Floor > N Then Floor = Floor - 2 ' Если верхний нечётный этаж вне диапазона
' Вычисляем нижний нечётный этаж
End If

Msg = "Количество этажей=" + CStr(N) + vbCrLf ' Формирование сообщения с ответом
Msg = Msg + "Номер квартиры=" + CStr(M) + vbCrLf
Msg = Msg + "Номер этажа=" + CStr(Floor)
MsgBox Msg, vbOKOnly, "Ответ"

Else
Msg = "Количество этажей=" + CStr(N) + vbCrLf ' Формирование аварийного сообщения
Msg = Msg + "Номер квартиры=" + CS tr(M)
MsgBox Msg, vbOKOnly, "Некорректные данные"
End If

End Sub


-----
Нет времени на медленные танцы

Ответ отправил: Megaloman, Профессионал
Ответ отправлен: 26.05.2010, 12:48
Номер ответа: 261672

Оценка ответа: 5
Комментарий к оценке:
большое спасибо)

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 261672 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Отвечает Andrew Kovalchuk, Студент :
    Здравствуйте, Ананьев Рудольф Олегович.
    Код в приложении.

    Приложение:

    -----
    Временная неудача лучше временной удачи

    Ответ отправил: Andrew Kovalchuk, Студент
    Ответ отправлен: 26.05.2010, 13:03
    Номер ответа: 261673

    Оценка ответа: 5
    Комментарий к оценке:
    спасибо

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 261673 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Вопрос № 178642:

    Даны две матрицы А(5,5); В(6,6). Уменьшить макси-мальный элемент в каждой из этих матриц в 10 раз.

    1.В работе необходимо выполнить алгоритмические задачи с использованием базовых типов данных и основных операторов языка программирования VBA.
    2. Задачи прислать в виде файлов Word либо Excel, с кодом программы, выполненном в среде VBA соответствующего компонента Office.
    3. В программах обязательно наличие комментариев, поясняющих основные алгоритмические шаги.

    Отправлен: 26.05.2010, 00:46
    Вопрос задал: Ананьев Рудольф Олегович, 2-й класс
    Всего ответов: 1
    Страница вопроса »


    Отвечает Andrew Kovalchuk, Студент :
    Здравствуйте, Ананьев Рудольф Олегович.
    В приложении приведен код, который выполняет необходимые действия. Массивы заполняются случайными числами.

    Приложение:

    -----
    Временная неудача лучше временной удачи

    Ответ отправил: Andrew Kovalchuk, Студент
    Ответ отправлен: 26.05.2010, 02:33
    Номер ответа: 261648

    Оценка ответа: 5

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 261648 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Вопрос № 178645:

    Написать процедуру, которая формирует двумерный массив А по следующему алгоритму:
    изменяется от 0 до N, j изменяется от 0 до M.

    1.В работе необходимо выполнить алгоритмические задачи с использованием базовых типов данных и основных операторов языка программирования VBA.
    2. Задачи прислать в виде файлов Word либо Excel, с кодом программы, выполненном в среде VBA соответствующего компонента Office.
    3. В программах обязательно наличие комментариев, поясняющих основные алгоритмические шаги.

    Отправлен: 26.05.2010, 01:01
    Вопрос задал: Ананьев Рудольф Олегович, 2-й класс
    Всего ответов: 1
    Страница вопроса »


    Отвечает Andrew Kovalchuk, Студент :
    Здравствуйте, Ананьев Рудольф Олегович.
    Вариант решения прилагается (вот только что там комментировать - не знаю)

    Приложение:

    -----
    Временная неудача лучше временной удачи

    Ответ отправил: Andrew Kovalchuk, Студент
    Ответ отправлен: 26.05.2010, 02:47
    Номер ответа: 261650

    Оценка ответа: 5
    Комментарий к оценке:
    спасибо

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 261650 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Вопрос № 178646:

    В файле хранится произвольный текст. Группы символов, разделенные пробелом и не содержащие пробелов внутри себя, будем называть словами. Удалить из каждого слова текста все последующие вхождения его первой буквы. Результат записать в новый файл.

    1.В работе необходимо выполнить алгоритмические задачи с использованием базовых типов данных и основных операторов языка программирования VBA.
    2. Задачи прислать в виде файлов Word либо Excel, с кодом программы, выполненном в среде VBA соответствующего компонента Office.
    3. В программах обязательно наличие комментариев, поясняющих основные алгоритмические шаги.

    Отправлен: 26.05.2010, 01:16
    Вопрос задал: Ананьев Рудольф Олегович, 2-й класс
    Всего ответов: 1
    Страница вопроса »


    Отвечает Megaloman, Профессионал :
    Здравствуйте, Ананьев Рудольф Олегович. Вот код макроса. В нём надо указать пути к файлам.
    Код:
    Sub Z178646()
    Const FileNameIn = "H:\Delete\0001.txt"
    Const FileNameOut = "H:\Delete\0001_OUT.txt"

    NFileIn = FreeFile ' Определяем ссылочный Входного номер файла
    Open FileNameIn For Input As #NFileIn ' Открываем входной файл

    NFileOut = FreeFile ' Определяем ссылочный Выходного номер файла
    Open FileNameOut For Output As #NFileOut ' Открываем выходной файл

    i = 0
    Do While Not EOF(NFileIn) ' Loop until end of file.
    Line Input #NFileIn, Dann ' Читаем построчно текст овый файл со словами
    Mass = Split(Dann, " ") ' Экспортируем прочитанную строку в массив. Резделитель - пробелы

    Dann = ""
    For i = 0 To UBound(Mass) ' Обрабатываем каждое слово в массиве, формируем новую строку
    If i <> 0 Then Dann = Dann + " "
    LM = Len(Mass(i)) ' длина слова
    If LM > 1 Then
    L1 = Mid(Mass(i), 1, 1) ' Выделяем первый символ в слове
    Dann = Dann + L1 + Replace(Mid(Mass(i), 2, LM), L1, "") ' Новое слово (первый символ+ результат замены его замены в оставшейся части слова на строку нулевой длины) добавляем в строку
    Else
    Dann = Dann + Mass(i) ' Слово из одной буквы
    End If
    Next

    Print #NFileOut, Dann ' Записываем новую строку в новый файл
    i = i + 1
    Loop

    Close #NFileIn ' Закрываем файлы
    Close #NFileOut

    MsgBox "Конвертация файла" + vbCrLf + FileNameIn + vbCrLf + "в файл" + vbCrLf + FileNameOut + vbCrLf + "выполнена"
    End Sub
    Excel-файл в прикреплённом файле Прикрепленный файл: загрузить »

    -----
    Нет времени на медленные танцы

    Ответ отправил: Megaloman, Профессионал
    Ответ отправлен: 26.05.2010, 17:15
    Номер ответа: 261683

    Оценка ответа: 5
    Комментарий к оценке:
    большое спасибо!

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 261683 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Вопрос № 178647:

    Дан список, состоящий из названий книг, фамилий авторов, издательства и года изданий. Упорядочить список по издательствам. Вывод на экран сформировать в виде таблицы. Для ввода данных использовать форму и элементы управления.

    1.В работе необходимо выполнить алгоритмические задачи с использованием базовых типов данных и основных операторов языка программирования VBA.
    2. Задачи прислать в виде файлов Word либо Excel, с кодом программы, выполненном в среде VBA соответствующего компонента Office.
    3. В программах обязательно наличие комментариев, поясняющих основные алгоритмические шаги.

    Отправлен: 26.05.2010, 01:16
    Вопрос задал: Ананьев Рудольф Олегович, 2-й класс
    Всего ответов: 1
    Страница вопроса »


    Отвечает Измалков Эдуард Леонидович, Студент :
    Здравствуйте, Ананьев Рудольф Олегович.
    Приведено решение для Excel. Данные из формы заносятся в определенный лист в книге, затем полученная таблица сортируется по наименованию издательства.
    Для начала Вам нужно будет создать форму, которая будет использоваться для ввода, и разместить на ней следующие элементы:
    4 поля InputBox c именами: Ввод_названия_книги, Ввод_автора, Ввод_издательства, Ввод_года_выпуска и 2 кнопки, одна для сохранения с именем Кнопка_записи, другая для выхода с именем Кнопка_выхода. Плюс еще можно добавить подписи (поля Label) для каждого поля ввода текста.
    Затем в код этой формы вставить следующий код
    Код:
    Const Имя_листа As String = "Список книг" ' название листа для ввода д
     анных

    Private Sub UserForm_Activate()
    ' при запуске формы нужно создать лист, куда будут сохраняться данные. Название листа указано в константе "Имя_листа"
    ' если лист уже существует, то его удалить

    Application.ScreenUpdating = False ' не выводить ничего на экран, пока активна форма

    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets ' цикл для перебора всех листов в текущем документе
    If ws.Name = Имя_листа Then ' лист уже существует
    Application.DisplayAlerts = False ' Отключение запроса на удаление листа, содержащего данные
    ws.Delete ' удаление листа
    Application.DisplayAlerts = True ' включение предупреждений
    Exit For ' выход из цикла
    End If
    Next ws ' следующий лист
    Set ws = ThisWorkbook.Worksheets.Add(before:=ThisWorkbook.Sheets(1)) ' создание нового листа перед первым листом
    ws.Name = Имя_листа ' присвоение ему нужного названия
    ' заголовки таблицы
    ws.Cells(1, 1).Value = "Название книги"
    ws.Cells(1, 2).Value = "Автор книги"
    ws.Cells(1, 3).Value = "Издательство"
    ws.Cells(1, 4).Value = "Год выпуска"

    Set ws = Nothing ' освобождение памяти
    End Sub

    Private Sub UserForm_Terminate()
    ' при закрытии формы сделать сортировку введенных данных
    With ThisWorkbook.Worksheets(Имя_листа).UsedRange ' дальнейшие действия будут выполняться над заполненным диапазоном
    ' сортировка по третьему полю в порядке возрастания, первая строка - заголовки, регистр не учитывать
    .Sort key1:=Columns(3), order1:=xlAscending, Header:=xlYes, MatchCase:=False
    .Columns.AutoFit ' автоматическая ширина столбцов по содержимому
    End With
    Application.ScreenUpdating = True ' включение отображения изменений на листе
    End Sub

    Pr ivate Sub Кнопка_выхода_Click()
    Unload Me ' выгрузка формы
    End Sub

    Private Sub Кнопка_записи_Click()
    ' Проверка на заполнение всех полей
    If Trim(Me.Ввод_названия_книги.Value) = "" Then ' проверка на заполнение поля ввода названия, для этого убираются крайние пробелы, если они есть
    MsgBox "Не введено название книги!", vbOKOnly + vbExclamation, "Внимание" ' сообщение с одной кнопкой "ОК" и значком предупреждения
    Me.Ввод_названия_книги.SetFocus ' перемещение курсора в нужное поле
    ElseIf Trim(Me.Ввод_автора.Value) = "" Then ' проверка на заполнение поля ввода автора, для этого убираются крайние пробелы, если они есть
    MsgBox "Не указан автор книги!", vbOKOnly + vbExclamation, "Внимание" ' сообщение с одной кнопкой "ОК" и значком предупреждения
    Me.Ввод_автора.SetFocus ' перемещение курсора в нужное пол е
    ElseIf Trim(Me.Ввод_издательства.Value) = "" Then ' проверка на заполнение поля ввода издательства, для этого убираю тся крайние пробелы, если они есть
    MsgBox "Не указано издательство, выпустившее книгу!", vbOKOnly + vbExclamation, "Внимание" ' сообщение с одной кнопкой "ОК" и значком предупреждения
    Me.Ввод_издательства.SetFocus ' перемещение курсора в нужное поле
    ElseIf Trim(Me.Ввод_года_выпуска.Value) = "" Then ' проверка на заполнение поля ввода года выпуска, для этого убираются крайние пробелы, если они есть
    MsgBox "Не указан год выпуска книги!", vbOKOnly + vbExclamation, "Внимание" ' сообщение с одной кнопкой "ОК" и значком предупреждения
    Me.Ввод_года_выпуска.SetFocus ' перемещение курсора в нужное поле
    ElseIf Len(Trim(Me.Ввод_года_выпуска)) > 4 Then ' в качестве года выпуска не может быть указано более 4 цифр
    MsgBox "Неправильно введен год выпуска - год не может содержать более 4 цифр", vbOKOnly + vbCritical, "Ошибка& quot; ' сообщение с одной кнопкой "ОК" и значком ошибки
    Me.Ввод_года_выпуска.SetFocus ' перемещение курсора в нужное поле
    ElseIf Not IsNumeric(Me.Ввод_года_выпуска) Then ' в поле ввода года введено не число
    MsgBox "В качестве года выпуска должно быть указано число", vbOKOnly + vbInformation, "Внимание" ' сообщение с одной кнопкой "ОК" и значком информации
    Me.Ввод_года_выпуска.SetFocus ' перемещение курсора в нужное поле
    ElseIf CInt(Me.Ввод_года_выпуска) > Year(Now) Then ' введен год больше текущего
    MsgBox "Год, указанный в качестве года выпуска еще не наступил", vbOKOnly + vbInformation, "Ошибка" ' сообщение с одной кнопкой "ОК" и значком ошибки
    Me.Ввод_года_выпуска.SetFocus ' перемещение курсора в нужное поле
    Else
    Dim i As Integer
    With ThisWorkbook.Worksheets(Имя_листа) ' with использует ся для того, чтобы внутри этого блока можно было обращаться к нужному листу без его явного указания
    i = .UsedRange.Rows.Count + 1 ' количество строк на текущий момент плюс одна, чтобы указывать на первую чистую строку
    .Cells(i, 1).Value = Me.Ввод_названия_книги.Value ' первый столбец - название книги
    .Cells(i, 2).Value = Me.Ввод_автора.Value ' второй столбец - автор
    .Cells(i, 3).Value = Me.Ввод_издательства.Value ' третий столбец - издательство
    .Cells(i, 4).Value = Me.Ввод_года_выпуска.Value ' четвертый столбец - год выпуска книги
    End With
    ' очистка значений полей ввода
    Me.Ввод_автора.Value = ""
    Me.Ввод_года_выпуска.Value = ""
    Me.Ввод_издательства.Value = ""
    Me.Ввод_названия_книги.Value = ""

    Me.Ввод_названия_книги.SetFocus ' перемещение указателя в поле ввода названия книги
    End If
    End Sub

    Ответ отправил: Измалков Эдуард Леонидович, Студент
    Ответ отправлен: 28.05.2010, 23:41
    Номер ответа: 261734

    Оценка ответа: 5
    Комментарий к оценке:
    спасибо

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 261734 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Вопрос № 178662:

    Подскажите скрипт для подключения библиотеки
    SHDocVw.dll (Microsoft.internet.control), что она даёт?
    Каков лучше эффет чтобы узнать загружена ли страница ВЭБа, от строк

    Do Until IE.readyState = READYSTATE_COMPLETE
    DoEvents
    Loop
    или
    Do While IE.ReadyState <> 4
    Loop
    DoEvents
    или, не помню дословно там есть ".Busy", помоему так
    Спасибо Эндрю

    Отправлен: 26.05.2010, 09:42
    Вопрос задал: Ципихович Эндрю, Посетитель
    Всего ответов: 1
    Страница вопроса »


    Отвечает Гаряка Асмик, Специалист :
    Здравствуйте, Ципихович Эндрю.


    SHDocVw.dll - это динамически подключаемая библиотека, в которой содержатся функции управления файловой системой Windows. Эта библиотека прямо используется браузером IE. Если на форме имеется WebControl, эта библиотека автоматически используется.


    READYSTATE_COMPLETE - константа, значение которой равно 4. Поэтому можно писать и так, так. Работать будет одинаково. Но если писать READYSTATE_COMPLETE, так более понятно для человека, который будет эту программу читать.
    -----
    Я ни от чего, ни от кого не завишу.

    Ответ отправил: Гаряка Асмик, Специалист
    Ответ отправлен: 26.05.2010, 12:04
    Номер ответа: 261668

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 261668 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.16 от 26.05.2010

    В избранное