Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Присвоение переменной значения цвета
 
Понял.
Всем спасибо!
Присвоение переменной значения цвета
 
Добрый вечер!

Как можно присвоить значение цвета переменной, чтобы потом удобнее красить им ячейки?
В коде есть много строк типа:

Код
Range("A1:A1000").Interior.Color = RGB (0,255,0)
...

Range("C1:C1000").Interior.Color = RGB (0,255,0)
 ...
Цветов всего несколько, и нужна возможность удобно менять их для всех таких диапазонов
Представляется примерно так:

Код
Dim color As ???
color = RGB (0,255,0)
...
Range(...).Interior.Color = color
Можно сделать 3 переменных Byte и вставлять потом в RGB, но не очень удобно. Есть варианты, как задать цвет одной переменной?
Защитить лист с возможностью изменения значений элементами управления
 
Понял, спасибо за ссылку!
Защитить лист с возможностью изменения значений элементами управления
 
Можете продемонстрировать?
Прикрепляю тестовый файл, лист защищен без пароля, кнопка на нем должна плюсовать ячейку при каждом нажатии, сейчас не срабатывает из-за защиты. При этом напрямую пользователь не должен иметь возможности выделять и менять эту ячейку.
Защитить лист с возможностью изменения значений элементами управления
 
Всем привет!

Нужно защитить лист таким образом, чтобы прямое изменение защищенных ячеек было невозможно, но при этом чтобы на них можно было влиять элементами управления (кнопками и счетчиками).
Как это можно сделать?
Если защитить с запретом выделения защищаемых ячеек - влияющие на них кнопки работать не будут.
Как взять данные из другого xls файла в той же папке (путь до папки может меняться)
 
Структура одинаковая.
Цитата
V пишет:  перенес папку с файлами в другое место, открыл книгу с ссылками - в них изменился путь автоматом.
Странно, у меня сам не заменяет, пишет о потере связи и предлагает вариант указать заново.
Еще постоянно выдает какие-то предупреждения о персональных данных, когда ставлю в формулах другие книги. На макросы ругается через раз (вообще при наличии любых макросов, насколько понимаю) при открытии файлов. Возможно, дело в настройках.

Спасибо за пример макроса, буду пробовать.
Как взять данные из другого xls файла в той же папке (путь до папки может меняться)
 
Прикрепляю файлы.
Еще примечательно то, что по началу формула вписывается как:
Код
 =[Database.xlsx]Лист1!$B$2
Но если сохранить файл (параллельно выдает предупреждение о персональных данных, которые не могут быть удалены с помощью инспектора документов), то при последующем запуске формула в ячейке уже такая:
Код
='E:\Program Files\ABC\[Database.xlsx]Лист1'!$B$2 
Еще проверил, если папку перебросить, все же предлагает указать новый источник, разумеется потеряв старый.
Но хорошо бы если просто читал всегда и без вопросов из родной папки, без необходимости что-то менять последующим пользователем.
Как взять данные из другого xls файла в той же папке (путь до папки может меняться)
 
Добрый день!
Есть файл xlsm, в который нужно подгружать данные из другого файла xls, используемого в качестве БД.
Предполагается нахождение обоих файлов в одной папке, но сама папка может перемещаться, соответственно, путь к ней - меняться.
Автоматически получил следующую формулу в ячейке:
Код
='E:\Program files\ABC\[Database.xlsx]PageA'!$B4 
То есть при переносе папки и изменении пути к ней - все такие ссылки придут в негодность.
Как сделать, чтобы чтение шло из файла Database в той же папке, где лежит запущенный xlsm файл?
Буду признателен, если предложите 2 способа: через формулу и через макрос.
Как назначить ряду однотипных счетчиков ряд подконтрольных ячеек (LinkedCell)
 
Спасибо! Только вопрос: в чем смысл строчки? :
Цитата
Dim obj As Object
Переменная obj далее в коде не используется
Как назначить ряду однотипных счетчиков ряд подконтрольных ячеек (LinkedCell)
 
Прикрепляю файл-пример.
Как назначить ряду однотипных счетчиков ряд подконтрольных ячеек (LinkedCell)
 
Всем доброго времени суток!
Нужно по-человечески сделать следующее:
Присвоить LinkedCell (подконтрольные ячейки) 9 однотипным счетчикам, каждая ячейка на 4 позиции ниже предыдущей.
Сейчас рабочий код такой:
cm_p1_x2_b - константа, определяет номер строки начала этого блока счетчиков
Код
Dexterity_1_spin.LinkedCell = "D" & (cm_p1_x2_b + 4)
 Dexterity_2_spin.LinkedCell = "D" & (cm_p1_x2_b + 8)
 Dexterity_3_spin.LinkedCell = "D" & (cm_p1_x2_b + 12)
 Dexterity_4_spin.LinkedCell = "D" & (cm_p1_x2_b + 16)
 Dexterity_5_spin.LinkedCell = "D" & (cm_p1_x2_b + 20)
 Dexterity_6_spin.LinkedCell = "D" & (cm_p1_x2_b + 24)
 Dexterity_7_spin.LinkedCell = "D" & (cm_p1_x2_b + 28)
 Dexterity_8_spin.LinkedCell = "D" & (cm_p1_x2_b + 32)
 Dexterity_9_spin.LinkedCell = "D" & (cm_p1_x2_b + 36)

Цикл сделать не выходит, пишет doesn't support this property or method
пробовал так:
Код
For n = 1 to 9
Shapes("Dexterity_" & n & "_spin").LinkedCell = "D" & (cm_p1_x2_b + n * 4)
Next n

или так:
Код
OLEObjects("Dexterity_" & n & "_spin").Object.LinkedCell = "D" & (cm_p1_x2_b + n * 4)
Shapes("Dexterity_" & n & "_spin").OLEFormat.Object.LinkedCell = "D" & (cm_p1_x2_b + n * 4)

Вопрос: как правильно прописать такую строку в цикле? Или иные предложения, как минимизировать размер кода в такой ситуации.
Не совсем понимаю специфики использования просто Shapes или OLEFormat, некоторые функции работают с одним, некоторые с другим. В данном случае, когда надо присвоить подконтрольную ячейку - обе выше названные не работают.
Советы и замечания по созданию текстового квеста в Excel
 
Добрый день!
Ищу советов в выборе методов при создании игрушки в экселе.
Заготовку книги прикрепляю.

Раньше я подобные таблицы только на формулах в ячейках и условном форматировании строил, без макросов и VBA в принципе, так что в спектре инструментов пока ориентируюсь мало. Кто что может посоветовать? В каком направлении лучше копать? (какие из ниже перечисленных действий нужно и лучше делать иначе, и посредством чего). Сейчас ситуация такая:
На первой странице планирую сделать порядка 15 характеристик с выпадающим списком подпараметров по единой схеме
Первую характеристику уже сделал вручную:
Кнопки создавал при помощи панели разработчика, как элементы ActiveX. Называл потом через окно параметров одинаковыми именами с последовательным номером и именем характеристики в начале имени (для простой групповой подмены в дальнейшем)
Теперь начинаю создавать новые характеристики путем копирования строк таблицы, последующего ручного переименования новых появившихся кнопок и счетчиков аналогично первой схеме и добавления их в код с подменой нужной части номера/названия через поиск-замену.

В итоге планирую несколько страниц по аналогии с этой, с различным содержимым, как базу, из которой потом будут подтягивать данные страницы, на которых будут производиться собственно расчеты. В дальнейшем, возможно, попробую сделать экспорт в какой-нибудь внешний софт.
Понятно, что эксель, возможно, не лучшее средство для этого, но хоть какой-то опыт создания удобных схем такого типа есть пока только в нем, а базовый вариант мне нужно сделать в ограниченный срок :) Так что вопрос пока касается именно экселя.

Заранее спасибо за любые поправки и советы!
Как заменять часть имени одной переменной значением другой переменной, Ищу способы уменьшить объем кода с большим числом похожих по имени переменных
 
Спасибо! Цикл заработал.

С VBA я раньше не работал, так что расспрашивать о тонкостях пока не буду, поизучаю теорию.
Есть только несколько общих вопросов, задам в новой теме.
Как заменять часть имени одной переменной значением другой переменной, Ищу способы уменьшить объем кода с большим числом похожих по имени переменных
 
День добрый!
Пишу текстовый квест на экселе :)
По ходу создания страницы с характеристиками перса возникла необходимость постоянно обрабатывать большое число кнопок, коих на всю страницу предполагается штук 300.. а то и больше
Имена кнопок в большинстве своем между собой отличаются только номером
Strength_1_null
Strength_2_null
Strength_3_null

...
Например, есть кнопка, задача которой - по щелчку окрашивать все выше упомянутые в цвет фона единой для всех ячейки.
Рабочий код сейчас такого вида:
Код
Strength_1_null.BackColor = Range("D296").Interior.Color
 Strength_1_null.ForeColor = Range("D296").Font.Color
 Strength_1_spin.BackColor = Range("D296").Interior.Color
 Strength_1_spin.ForeColor = Range("D296").Font.Color
 Strength_2_null.BackColor = Range("D296").Interior.Color
 Strength_2_null.ForeColor = Range("D296").Font.Color
 Strength_2_spin.BackColor = Range("D296").Interior.Color
 Strength_2_spin.ForeColor = Range("D296").Font.Color
 Strength_3_null.BackColor = Range("D296").Interior.Color
 Strength_3_null.ForeColor = Range("D296").Font.Color
 Strength_3_spin.BackColor = Range("D296").Interior.Color
 Strength_3_spin.ForeColor = Range("D296").Font.Color
 Strength_4_null.BackColor = Range("D296").Interior.Color
 Strength_4_null.ForeColor = Range("D296").Font.Color
 Strength_4_spin.BackColor = Range("D296").Interior.Color
 Strength_4_spin.ForeColor = Range("D296").Font.Color
 Strength_5_null.BackColor = Range("D296").Interior.Color
 Strength_5_null.ForeColor = Range("D296").Font.Color
 Strength_5_spin.BackColor = Range("D296").Interior.Color
 Strength_5_spin.ForeColor = Range("D296").Font.Color
 Strength_6_null.BackColor = Range("D296").Interior.Color
 Strength_6_null.ForeColor = Range("D296").Font.Color
 Strength_6_spin.BackColor = Range("D296").Interior.Color
 Strength_6_spin.ForeColor = Range("D296").Font.Color
 Strength_7_null.BackColor = Range("D296").Interior.Color
 Strength_7_null.ForeColor = Range("D296").Font.Color
 Strength_7_spin.BackColor = Range("D296").Interior.Color
 Strength_7_spin.ForeColor = Range("D296").Font.Color
 Strength_8_null.BackColor = Range("D296").Interior.Color
 Strength_8_null.ForeColor = Range("D296").Font.Color
 Strength_8_spin.BackColor = Range("D296").Interior.Color
 Strength_8_spin.ForeColor = Range("D296").Font.Color
 Strength_9_null.BackColor = Range("D296").Interior.Color
 Strength_9_null.ForeColor = Range("D296").Font.Color
 Strength_9_spin.BackColor = Range("D296").Interior.Color
 Strength_9_spin.ForeColor = Range("D296").Font.Color

То есть разница между строками - только в номере в имени окрашиваемой кнопки.
Как можно решить такую задачу, например, с помощью цикла? Интересен синтаксис, попробовал вот так:
Код
 For n_color = 1 To 9
 ActiveSheet.Shapes("Strength_" & n_color & "_null").BackColor = Range("D296").Interior.Color
 ActiveSheet.Shapes("Strength_" & n_color & "_null").ForeColor = Range("D296").Font.Color
 ActiveSheet.Shapes("Strength_" & n_color & "_spin").BackColor = Range("D296").Interior.Color
 ActiveSheet.Shapes("Strength_" & n_color & "_spin").ForeColor = Range("D296").Font.Color
 Next n_color

Но не работает, пишет Object doesn't support this property or method
Вопрос - как правильно вставить переменную в имя другой переменной (в конкретном случае - переменную-счетчик цикла в имя кнопки), если это возможно. Или иные пути решения задачи без копирования строки каждый раз.
Страницы: 1
Наверх