Вопрос № 53800: Здравствуйте, срочно нужна ваша помощь ! Программа, запущенная на выполнение в Visual Basic for MSDOS 1.0 работает нормально, но отказывается работать на другом компьютере и даже на том же самом, если я компилирую и перемещаю экзешник на другой диск....Вопрос № 53856: Доброго здоровья и крепких нервов экспертам!
Есть в Excel табличка с двумя листами - в одном некие данные, в другом т.н.
"сводная таблица" (pivot table) по этим данным.
Данные в первом листе преиодически изменяются (в основном к...Вопрос № 53865: Уважаемые эксперты!
Помогите, пожалуйста! Мне необходимо создать в EXCEL тест для проверки знаний, я сделала каждый вопрос на отдельном листе, нужно ограничить время ответа на каждый вопрос, но в то же время сохранить возможность перехода к следу...
Вопрос № 53.800
Здравствуйте, срочно нужна ваша помощь ! Программа, запущенная на выполнение в Visual Basic for MSDOS 1.0 работает нормально, но отказывается работать на другом компьютере и даже на том же самом, если я компилирую и перемещаю экзешник на другой диск. Программа - простое консольное приложение (см. приложение). Просит какой-то файл VBDRT10E.ехе. Подскажите, пожалуйста - что это за файл и как выйти из положения ?
Приложение:
Отправлен: 30.08.2006, 18:31
Вопрос задал: Varfolomey (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: C4tnt
Здравствуйте, Varfolomey!
К сожалению у меня нет такого BASIC'а
Несколько общих рекомендаций:
Если есть опции компилятора, поищите в них переключатель вида
compile to P-CODE/Native code (выбрать Native code) Это для MSVB, может и в досе работает.
Попробуйте найти файл и положить его рядом с программой. Скорее всего этот файл - интерпретатор бейсикового кода, что-то типа MSVBM60.dll в Windows. Особенно если название расшифровывается так: VB Dos RunTime 10 E
Если у бейсика был установщик - стоит изучить переменную PATH (это или config.sys или autoexec.bat)
P.S. Да, я занят - пишу этот ответ
--------- Теперь к нашим ответам осталось лишь найти вопросы
Ответ отправил: C4tnt (статус: 2-ой класс)
Ответ отправлен: 30.08.2006, 19:22 Оценка за ответ: 4 Комментарий оценки: Cпасибо за помощь, но все-таки ответ Кокорича Вадима Леонидовича конкретней.
Судя по всему, этот файл - run-time модуль и наличие запроса на него говорит о том, что программа скомпилирована в так называемый Run-time.exe. Старые версии Basic (но не все!) поддерживали компиляцию также и Standalone-exe, выполняемого вне среды разработки. В меню Run стоит посмотреть опции компиляции - создав экзешник такого типа, Вы избавитесь от "довеска" к программе. Правда, конечный файл в этом случае потяжелеет (и, возможно, значительно) - плата за удобство.
--------- Труд сделал обезьяну человеком, а лень человека - программистом !
Ответ отправил: Кокорич Вадим Леонидович (статус: 5-ый класс)
Ответ отправлен: 30.08.2006, 19:50 Оценка за ответ: 5 Комментарий оценки: В точку! Там есть выбор режима компиляции "RunTime-exe" - "Standalone-exe".
Вопрос № 53.856
Доброго здоровья и крепких нервов экспертам!
Есть в Excel табличка с двумя листами - в одном некие данные, в другом т.н.
"сводная таблица" (pivot table) по этим данным.
Данные в первом листе преиодически изменяются (в основном кол-во записей)
После каждого изменения приходится лезть в свойства итоговой таблицы и менять диапазон и на актуальный.
Хотелось бы пример скрипта на VB, который можно привязать к кнопке для изменения диаразона значений для сводной таблицы.
Примечание: таблица данных начинается всегда со строки 2 и заканчивается пустыми строками. Внутри таблицы пустых строк нет.
Отправлен: 31.08.2006, 10:51
Вопрос задал: SlavikP (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: EPDSota
Здравствуйте, SlavikP!
пишешь макрос такого вида (alt-F11 - вызывает бейсик, в нем создаешь новый модуль и пишешь в нем):
function GetTableSize as integer
i=2
while activedoument.sheets('Имя_листа_твоей_таблицы_с_данными').cells(2,i)<>"" do
i=i+1
wend
end function
Потом в любую ячейке этого документа можешь ее использовать (втставив формулу):
=GetTableSize()
--------- Открыть глаза навстречу солнцу
Ответ отправил: EPDSota (статус: Специалист)
Ответ отправлен: 31.08.2006, 11:00
Если исходить из того, что вам известен диапазон ячеек, содержимое которых может измениться, то этот макрос перед закрытием приложения Excel предлагает сохранить возможные изменения или отказаться (не сохранять):
Dim V ' в область объявлений
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If MsgBox("Обновить содержимое итоговой таблицы в соответствии с данными Листа1 ?", vbOKCancel) = vbOK Then
Worksheets(1).Activate
V = Range("A1:C4").Value
Worksheets(3).Activate
Range("A1:C4").Value = V
Worksheets(1).Activate
Application.Quit
End If
End Sub
Вариантов вообще много - можно было бы сделать это без запроса к пользователю или только при активации листа с итоговой таблицей, или поместить код (как следует из вашего вопроса) в обработку события Commandbutton1_Click().
--------- Труд сделал обезьяну человеком, а лень человека - программистом !
Ответ отправил: Кокорич Вадим Леонидович (статус: 5-ый класс)
Ответ отправлен: 31.08.2006, 18:19
Вопрос № 53.865
Уважаемые эксперты!
Помогите, пожалуйста! Мне необходимо создать в EXCEL тест для проверки знаний, я сделала каждый вопрос на отдельном листе, нужно ограничить время ответа на каждый вопрос, но в то же время сохранить возможность перехода к следующему вопросу до истечения установленного времени. Возможно ли установить разное время на каждый вопрос?
Спасибо
Отправлен: 31.08.2006, 11:48
Вопрос задала: Lubov (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 2)
Вы вряд ли сможете задать время на обработку вопроса - VBA, в отличие от VB, не имеет контрола Timer, так что автоматической смены вопроса не произойдет. Чтобы узнать, склько времени тестируемый затратил на ответ, с помощью функции Time зафиксируйте сначала время получения вопроса, а затем - отправки ответа. Разница и покажет, превысил ли испытуемый лимит времени. Как мне кажется, это единственный вариант.
К сожалению, каким образом пользователь получает вопросы и отправляет ответы Вы не описали, поэтому ответ такой общий. Если Вы оставите в мини-форуме вопроса дополнительную информацию, ответ будет более конкретный, с примерами.
--------- Труд сделал обезьяну человеком, а лень человека - программистом !
Ответ отправил: Кокорич Вадим Леонидович (статус: 5-ый класс)
Ответ отправлен: 31.08.2006, 22:35
Отвечает: Митрофанов Артем Борисович
Здравствуйте, Lubov!
Для установки времени на ответ обычно используется управляющий элемент "Таймер". Возникает вопрос можно ли установить разное время и если да, то как. Ответ прост. Создайте несколько(сколько нужно) "Таймеров" и установите у них разные значения свойств Interval. Удачи!