Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/26: Рейтинг темы: голосов - 26, средняя оценка - 4.73
12 / 12 / 4
Регистрация: 16.03.2012
Сообщений: 252

Формула массива в макросах и как прописать пароль в макросе

03.07.2013, 11:32. Показов 5046. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,
уже неоднократно получив помощь от участников форума, прошу помочь ещё в 2х вещах:

1. Как прописать в макросе, что формула является формулой массива?
В ячейке, например, прописано так {=RC[1]+RC[2]}, в макрос же вставляется ActiveCell.FormulaR1C1 = "=RC[1]+RC[2]", т.е. без фигурных скобок. Я пробывал добавить их вручную ActiveCell.FormulaR1C1 = "{=RC[1]+RC[2]}", но вычисление массива не происходит....

2. Есть макрос, который выполняет действия:
- открыть лист,
- снять защиту (запросив ввод пароля),
- необходимые вычисления,
- сформировать отчет в новую книгу, сохранив ее.
- защитить лист,
- скрыть лист.
все ок, и все работает, кроме одного:
при защите лист защищается без пароля.
Что нужно вписать в тело макроса, чтобы пароль был такой же, как пользователь вводит при снятие? Т.е. пароль всегда оставался бы тем же самым? Если это нельзя, то как сделать так, чтобы после команды "защитить лист" (5шаг макроса) макрос требовал ввода пароля вручную?
На данный момент этот пункт макроса такой:
Visual Basic
1
2
3
4
5
6
7
8
9
 ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingCells:=True, AllowFormattingColumns:=True, _
        AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
        :=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
        AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
        AllowUsingPivotTables:=True
    Sheets("report").Select
    ActiveWindow.SelectedSheets.Visible = False
    Sheets("Sheet1").Select
Заранее спасибо!!!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.07.2013, 11:32
Ответы с готовыми решениями:

Как прописать в макросе =сегодня()?
добрый день. подскажите как в макросе прописать =сегодня()? нужно это за тем, что бы когда выгружали отчет из программы проставлялось...

Как прописать формулу в макросе вывода
Доброго дня! файл не на файлопомойке, а во вложении Что должен делать макрос. У нас есть табличка. Сверху написаны числа месяца. Если...

Как прописать правильно путь в макросе удаления пробелов
Имеется 2 листа в разных книгах. Мне нужно прописать путь так чтобы находясь в одной книге и запустив макрос пробелы удалялись в колонке...

6
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
03.07.2013, 11:41
1. Используйте

ActiveCell.FormulaArray=

Только не нужно писать фигурные скобки, они сами потом в ячейке появятся

2. Укажите пароль в коде

.Protect(Password, DrawingObjects, Contents, Scenarios, UserInterfaceOnly)

ActiveSheet.Protect Password:= ПАРОЛЬ, DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
:=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
AllowUsingPivotTables:=True
1
12 / 12 / 4
Регистрация: 16.03.2012
Сообщений: 252
03.07.2013, 15:28  [ТС]
Я так пробывал, выдает ошибку... Может другое у меня не правильно?
Visual Basic
1
2
3
4
5
Range("J5").Select
    ActiveCell.FormulaArray = _
        "=SUM(IF(FREQUENCY(IF(LEN(‘This sheet'!R[-3]C[-7]:R3997C[-7])>0,MATCH(‘This sheet'!R[-3]C[-7]:R3997C[-7],’This sheet'!R[-3]C[-7]:R3997C[-7],0),""""), IF(LEN(‘This sheet'!R[-3]C[-7]:R3997C[-7])>0,MATCH(‘This sheet'!R[-3]C[-7]:R3997C[-7],’This sheet'!R[-3]C[-7]:R3997C[-7],0),""""))>0,1))"
    Range("J6").Select
End Sub
В ячейке формула работает идеально (с фиг.скобками конечно же)

Добавлено через 3 часа 40 минут
может ещё какие-нибудь скобки добавить? Я все варианты уже перепробывал...
0
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
03.07.2013, 15:30
а вы файл с рабочей формулой приложите сюда (только вообще всю лишнюю информацию удалите из него)
1
12 / 12 / 4
Регистрация: 16.03.2012
Сообщений: 252
03.07.2013, 15:59  [ТС]
ок, вроде все удалил лишнее. данные на листе 111, подсчет уник. значений на листе результаты.
загрузился только как без поддержки макросов. С ними - никак - некорректный файл ..
Вложения
Тип файла: xlsx example1.xlsx (22.5 Кб, 8 просмотров)
0
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
03.07.2013, 16:54
Visual Basic
1
2
3
4
Sub test()
Range("G1").FormulaArray = _
        "=SUM(IF(FREQUENCY(IF(LEN('111'!C2:C$3894)>0,MATCH('111'!C2:C$3894,'111'!C2:C$3894,0),""""),IF(LEN('111'!C2:C$3894)>0,MATCH('111'!C2:C$3894,'111'!C2:C$3894,0),""""))>0,1))"
End Sub
В справке по FormuaArray так же написано

The FormulaArray property also has a character limit of 255.

Т.е. формула не должна содержать более 255 символов. В вашей формуле 281 символ
1
12 / 12 / 4
Регистрация: 16.03.2012
Сообщений: 252
03.07.2013, 17:23  [ТС]
Огромное спасибо за разъяснение!
в оригинале название листа - 15 символов. 6 использование в формуле = 90...
придется менять название листа. Обыдно... но придется..
СПАСИБО!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.07.2013, 17:23
Помогаю со студенческими работами здесь

Как в макросе прописать вставку пустых строк по условию
Доброй ночи всем одаренным способностью корректно писать макросы! Подскажите, плизззз! Как в макросе прописать добавление пустых строк...

Автоматическое исправление ошибки 2001. Как это прописать в макросе?
Всем привет! Нужна Ваша помощь! Создал Кнопку для открытие запроса с поиском нужного адреса (со всплывающим окном). Все работает, но...

Как правильно прописать в макросе путь и имя для создаваемого файла?
Создаю макрос в Excel 2007 по публикации выделенных листов файла в формате .pdf. Необходимо как-то изменить макрос, чтобы путь и имя...

Как прописать в макросе несколько человек для копирования в определенный лист
Добрый вечер, уважаемые Программисты! Очень нужна ваша помощь. Подскажите, пожалуйста, как добавить в готовый макрос, еще 2-3 человека. ...

Как обойти пароль на макросе ?
Помогите пожалуста! Я забыл пароль на макрос в Excel-е, не подскажите как это дело поломать? Зарание спасибо.


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru