Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
129 / 0 / 1
Регистрация: 16.10.2012
Сообщений: 53

Кнопка на листе выполняет ещё раз функцию, как этого избежать?

24.05.2013, 16:07. Показов 1377. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На листе эксель есть кнопка СОРТИРОВАТЬ, которая обращается к макросу.
Макрос определяет сколько столбцов и сколько строк заполнено данными на листе,формирует массив, заносит в массив данные, сортирует этот массив и выводит отсортированные данные на лист, так чтобы можно было сравнить заданный массив и отсортированный.
Если заполнить лист данными с клавы - всё нормально работает!
Если заполнить лист данными при помощи функции =ЦЕЛОЕ(65-10*СЛЧИС()) , то лист заполнится случайными числами от 10 до 65.
При нажатии на кнопку СОРТИРОВАТЬ, генятся случайные числа от 10 до 65 ещё раз,а макрос сортирует прошлые сгенерированые значения!
Кто знает,в чём прикол?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.05.2013, 16:07
Ответы с готовыми решениями:

Кнопка выполняет действие только один раз
добрый день столкнулся с проблемой никак не могу решить . вот код namespace WindowsFormsApp32 { public partial class...

вызов этого скрипта ещё раз
Подскажите пожалуйста как сделать Есть скрипт PHP, мне надо в конце добавить «вызов этого скрипта ещё раз с передачей параметра» если...

Как через goto вернуться назад, чтоб еще раз проверить функцию?
ребят,подскажите пожалуйста,как мне через goto вернуться назад,чтоб еше раз проверить мою функцию? ...

11
81 / 24 / 2
Регистрация: 18.01.2013
Сообщений: 74
24.05.2013, 16:19
попробуй перед сортировкой сохранять книгу...
0
129 / 0 / 1
Регистрация: 16.10.2012
Сообщений: 53
24.05.2013, 16:31  [ТС]
Цитата Сообщение от mcherry Посмотреть сообщение
попробуй перед сортировкой сохранять книгу...
попробовал, не помогает
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
24.05.2013, 16:48
Попробуйте так:
Visual Basic
1
2
3
    Application.Calculate = xlCalculationManual
    ' здесь макрос по сортировке
    Application.Calculate = xlCalculationAutomatic
0
129 / 0 / 1
Регистрация: 16.10.2012
Сообщений: 53
24.05.2013, 17:38  [ТС]
Цитата Сообщение от toiai Посмотреть сообщение
Попробуйте так:
Visual Basic
1
2
3
    Application.Calculate = xlCalculationManual
    ' здесь макрос по сортировке
    Application.Calculate = xlCalculationAutomatic
подскажите в какое именно место нужно вставить?
У меня просто макрос состоит из 3-ех процедур
Public Sub Read_array(ByRef arr() As Integer, n As Integer, m As Integer)

End Sub

Public Sub Shift(ByRef arr() As Integer, n As Integer, m As Integer)

End Sub

Sub Sort_heap()
Главная процедура, её вызывает кнопка
End Sub
0
81 / 24 / 2
Регистрация: 18.01.2013
Сообщений: 74
24.05.2013, 18:04
думаю сюда:

Sub Sort_heap()

Application.Calculate = xlCalculationManual
Главная процедура, её вызывает кнопка
Application.Calculate = xlCalculationAutomatic

End Sub

это просто отключение автоматического пересчета формул
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
24.05.2013, 18:14
Visual Basic
1
2
3
4
5
Sub Sort_heap()
   Application.Calculate = xlCalculationManual
    'Главная процедура, её вызывает кнопка
    Application.Calculate = xlCalculationAutomatic
End Su
b
0
129 / 0 / 1
Регистрация: 16.10.2012
Сообщений: 53
24.05.2013, 18:22  [ТС]
выдаёт ошибку компиляции

Expected Function or variable

и выделяет .Calculate =
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
24.05.2013, 18:42
Приношу извинения, замени на эти строки соответственно
Visual Basic
1
2
    Application.Calculation = xlManual
    Application.Calculation = xlAutomatic
1
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
24.05.2013, 18:58
Цитата Сообщение от artemed Посмотреть сообщение
Если заполнить лист данными при помощи функции =ЦЕЛОЕ(65-10*СЛЧИС()) , то лист заполнится случайными числами от 10 до 65.
Там, где они сгенерировались, замените формулы значениями. Неважно, вручную либо кодом.
0
129 / 0 / 1
Регистрация: 16.10.2012
Сообщений: 53
25.05.2013, 00:45  [ТС]
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от toiai Посмотреть сообщение
Приношу извинения, замени на эти строки соответственно
Visual Basic
1
2
    Application.Calculation = xlManual
    Application.Calculation = xlAutomatic
не срабатывает,но все равно спасибо

Добавлено через 15 минут
походу надо как-то отменить выполнение функции =ЦЕЛОЕ(65-10*СЛЧИС()) в самом макросе, что бы при нажатии кнопки дважды функция не выполнялась
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
25.05.2013, 08:46
Цитата Сообщение от artemed Посмотреть сообщение
Если заполнить лист данными при помощи функции =ЦЕЛОЕ(65-10*СЛЧИС()) , то лист заполнится случайными числами от 10 до 65.
Команда Sort автоматически вызывает перерасчет формул.
Предлагаю заполнять таблицу тоже макросом, тогда все встанет на места.
Visual Basic
1
2
3
4
5
6
7
8
Sub Zapolnenie()
    Dim x As Range
    Range("a1:b15").ClearContents
    Randomize
    For Each x In Range("a1:b15")
        x = Int(10 + 55 * Rnd)
    Next
End Sub
Диапазон Range укажи свой.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.05.2013, 08:46
Помогаю со студенческими работами здесь

Сделать так чтобы кнопка "Назад" еще и восстанавливала на листе удаленную кнопку со всеми параметрами и ссылками
Всем привет. Продолжаю грызть науку VBA. Подскажите. Есть документ Word, на листе создана кнопка, которая запускает форму - меню....

Еще раз про корреляционную функцию
Здрасти всем. Облазил интернет, прочитал Сергиенко, но так и не нашел нигде простой и очень необходимой, казалось бы, вещи. Правильный...

Окно закрывается, сразу. Как этого избежать?
Добрый день. Я только начал изучать C# и не могу найти ту функцию, которая бы остановила окно? Подскажите мне пожалуйста!

Окно закрывается, сразу. Как этого избежать?
Добрый День программисты(будущие или уже)! Вопрос консольное окно закрывается не успев показать информацию! Как этого избежать, какой...

Recv блокирует управление. Как избежать этого
Проблема в следующем. Я уже реализовал простые сетевые игры типа морского боя и крестиков-ноликов. Эти игры пошаговые и нет проблемы с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru