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

Страницы: 1
Задание имени для картинки, Изменение принципа именования картинок в Excel 2024
 
Добрый день! Прошу помощи разобраться в следующей ситуации.
Год или два назад я делал программу в Excel 2021, в которой у меня были вставлены картинки на рабочих листах. Все эти картинки были проименованы и эти имена работают, что подтверждается работоспособностью следующего кода:
Код
ActiveSheet.Shapes.Range(Array("Испания")).PictureFormat.ColorType = msoPictureAutomatic
Но где изменить это имя не могу найти. У картинки нету блока "Свойства" с именем, как например у таблицы. Хотя, насколько я помню, то именно через такой блок я вписывал имена всем картинкам. Проверил, что проблема не в Excel 2024, так как на Excel 2021 сейчас тоже не нашёл блока с именем. Кроме того, запрос в гугле выдал следующий результат:
Цитата
В Excel нет возможности присвоить имя непосредственно картинке, как это можно сделать для ячейки или диапазона ячеек.
Решил проблему с переименованием принудительно через VBA, зная старые названия, но всё же, как обратиться к картинке, не зная её названия?

ВОПРОС: действительно ли сейчас всё поменяли и теперь нельзя вписывать названия вставленных на рабочий лист картинок через Excel или же я просто не смог это найти?
Событие Worksheet_Change для конкретного диапазона
 
Добрый день! Прошу помочь разобраться с событием Worksheet_Change.
С помощью проверки If Target.Column = 2 я делаю так, чтобы событие срабатывало только при изменениях во втором столбце. А можно ли сделать так, чтобы ещё уменьшить этот диапазон до конкретных ячеек? У меня есть именованный через Диспетчер имён диапазон Names. Какой проверкой можно привязать событие только к этому диапазону?
Иерархия объектов на форме, Не получается выставить label на форме так, чтобы он отображался поверх фрейма
 
Добрый день! Проблема похоже максимально простая, но протыкав всюду, куда только можно, так и не смог найти ей решение.
С помощью всплывающего лейбла делаю замену ControlTipText-у. А проблема в том, что label отображается только в пределах фрейма, в котором расположен и не влезая в него просто скрывает всю часть, которая выходит за пределы фрейма. Если создать лейбл за пределами фрейма, то он всё равно будет располагаться под всеми фреймами.
Вопрос: реально ли как-то организовать этот лейбл, чтобы он отображался поверх всех фреймов формы? С другими лейблами или простыми объектами, например, текстбоксами, это решается кнопками Bring Forward / Send Forward в контекстном меню. С фреймами же эти кнопки никак не помогают.
Использование формул в правилах условного форматирования, В определённых местах формулы условного форматирования работают некорректно
 
Добрый день! Никак не могу разобраться, от чего возникает некорректная работа формулы условного форматирования.
Задача: Последнее правило условного форматирование должно рисовать границу между строками в случае несоответствия значений в ПЕРВОМ или ВТОРОМ или ПОСЛЕДНЕМ столбцах, т. е. если следующее <> предыдущему.
Результат: Всё работает отлично по всей таблице, кроме трёх мест. Обозначил рядом красным и отдельно выделил по каким условиям работает правило (скриншот). Чтобы рисовалась граница должна быть хотя бы одна ИСТИНА, как в зелёных примерах ниже.
Перепробовал копирование туда-сюда, чтобы избежать каких-либо малейших неточностей в значениях, но условие говорит само за себя: три ЛЖИ дают ИСТИНУ...
Вопрос: Может быть есть какой-то нюанс в работе этих формул или может просто я дурак чего-то очевидного там не вижу?
Изменено: StrangeCry - 13.01.2023 13:42:04
Некорректное изменение свойств объекта, При изменении свойства Font.Underline объект некорректно отображает результат
 
Добрый день! Прошу помочь разобраться в проблеме. Следующий код должен просто подчеркнуть один из label-ов.
Код
For p = 1 To MainCalendar.DataBodyRange.Rows.Count
    If HomeTeam(n) = Range("AwayTeam").Rows(p).Value And AwayTeam(n) = Range("HomeTeam").Rows(p).Value Then
       'Ничья:
        If Range("HomeScore").Rows(RowsCollection(n)) + Range("AwayScore").Rows(p) = Range("AwayScore").Rows(RowsCollection(n)) + Range("HomeScore").Rows(p) Then
            HomeTeamLabel(n).LabelClass.Font.Underline = False
            AwayTeamLabel(n).LabelClass.Font.Underline = False
       'Проход домашней команды:
        ElseIf Range("HomeScore").Rows(RowsCollection(n)) + Range("AwayScore").Rows(p) > Range("AwayScore").Rows(RowsCollection(n)) + Range("HomeScore").Rows(p) Then
            HomeTeamLabel(n).LabelClass.Font.Underline = True
            AwayTeamLabel(n).LabelClass.Font.Underline = False
       'Проход гостевой команды:
        ElseIf Range("HomeScore").Rows(RowsCollection(n)) + Range("AwayScore").Rows(p) < Range("AwayScore").Rows(RowsCollection(n)) + Range("HomeScore").Rows(p) Then
            HomeTeamLabel(n).LabelClass.Font.Underline = False
            AwayTeamLabel(n).LabelClass.Font.Underline = True
        End If
    End If
Next p
Но почему-то он подчёркивает оба вне зависимости от значения True или False. Проверял код пошагово: максимально правильно заходит в нужный ElseIf и срабатывает изменение Font.Underline, вот только срабатывает всегда на True, не зависимо от того, в какой из ElseIf-ов попало. Пробовал и без применения класса, просто по имени label-а, результат такой же.
Может есть какие-то другие варианты изменения этого свойства? Или при каких вообще случаях может происходить такая некорректность?
Не работает пересчёт данных при использовании формул в умной таблице, Формула не работает, когда берёт данные из умной таблицы, которые рассчитаны автоматической формулой
 
Добрый день! Изначально проблемы не было. Есть Таблица1 и посторонний столбец (Скриншот 1). В постороннем столбце вычисляются значения на основании результатов в Таблице1. Ввожу вручную результаты в Таблицу1 и посторонний столбец всё корректно считает динамически. Всё работает, как надо.
Но, как только делаю в Таблице1 формулы для того, чтобы результаты вписывались не вручную, а брались из другой таблицы, формула в постороннем столбце перестаёт корректно работать.
Это подтверждается при проверке формулы на Скриншоте 2: видно, что результат должен быть "1", как при ИСТИНЕ, а он выдаёт пустоту, которая задана при ЛЖИ.
Но если тут же сработать вручную формулу в Таблице1, то формула в постороннем столбце работает.
Отсюда возникает вопрос: это такой нюанс работы умной таблицы или может как-то можно включить корректный пересчёт при использовании формул?
Программное создание ToggleButton на рабочем листе
 
Прошу помощи в создании выключателя ToggleButton и обработки его события через код VBA. Имею два подхода, но оба заходят в тупик.
Код
Dim Toggle As OLEObject
Set Toggle = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ToggleButton.1", Link:=False, _
    DisplayAsIcon:=False, Left:=630, Top:=266.25, Width:=52.5, Height:=30)
Toggle.Object.Caption = "Toggle"
Этим кодом вполне корректно создаётся ToggleButton, но как привязать макрос сюда я не знаю. Toggle.OnAction не работает.
Код
With ActiveSheet.Buttons.Add(Left:=550, Top:=6, Width:=100, Height:=22.5)    
    .OnAction = "Module1.ToggleMacros"
    .Caption = "Toggle"
End With
Этот код делает то, что нужно и привязывает с помощью .OnAction нужный макрос. Вот только это обычная кнопка. Таким же образом можно создать Лэйбл или ТекстБокс, если вместо Buttons записать Labels или TextBoxes. Но вот ToggleButtons почему-то не работает.
Прозрачность кнопки на рабочем листе Excel
 
Здравствуйте! Столкнулся с проблемой при работе с прозрачностью кнопки.
Если делать кнопку на форме, то свойство fmBackStyleTransparent, которое делает кнопку прозрачной, работает правильно. Но, если же добавить кнопку (элемент ActiveX) на рабочий лист, то данное свойство изначально делает кнопку прозрачной, но сразу после нажатия на неё прозрачность теряется и появляется снова только после клика на какой-то другой объект.
Вопрос: это такой неудобный нюанс работы кнопки на листе или может нужно как-то дополнительно программировать кнопку, чтобы прозрачность сохранялась и после нажатия?
UBound и LBound: результат функциий почему-то -1 и 0
 
Добрый день! Столкнулся с некорректной роботой функций UBound и LBound и не могу разобраться почему. Процедура записана в модуле класса.

В момент выполнения функций UBound и LBound массив AllMatchesHomeTeamLabel, определяемый как Dim AllMatchesHomeTeamLabel() As New ClassModule, имеет размерность (1 to 17), но результат функции почему-то выдают -1 и 0.
Проверял функции в обычном модуле: там и массив, определяемый как Public HomeK1() As Double, и как Public HomeTeamLabel() As New ClassModule, выдают правильные значения своих верхних и нижних индексов.
Поэтому сделал вывод, что это либо связано с тем, что процедура записана в модуле класса и там есть какие-то свои нюансы, либо есть какая-то ошибка, которой я не вижу?
Страницы: 1
Наверх