Добрый день! Подскажите пожалуйста решение задачи:Нужно вставить изображения из папки на компьютере в ячейку в книге эксель (например G7) , но так, чтобы картинка изменялась в зависимости от введённого значения в ячейке С2. Не выпадающим списком, а просто вводом значения, например: в ячейку С2 вводим значение 10, а в ячейке G7 появляется изображение image10.jpg, в ячейку С2 вводим значение 8, а в той же ячейке G7 изображение меняется на image8.jpg и т.д.
Я пробовал решить эту задачу с помощью данной статьи: https://www.planetaexcel.ru/techniques/1/14763/, и функционал этого метода меня почти полностью устраивает, это именно то, что мне нужно, кроме того момента, что мне не выпадающий список нужен, а возможность вводить значение в ячейку С2, от которого будет изменяться изображение в ячейке G7. Это часть большего проекта, смысл которого в том, что в ячейка С2 будет ссылаться на другую ячейку, в которой будет появляться некая сумма чисел и в зависимости от этой суммы в документ должно вставляться определённое изображение...
В прикреплённой "Книге1" реализован способ из вышеуказанной статьи, я его вложил в надежде, что может быть там нужно всего лишь добавить пару формул или сделать незначительные изменения.
В прикреплённом файле "post_29533" реализован другой способ, идеальный для меня в моем случае, но он на макросах, а я в них не силен и не представляю как там и что построено.
P. S. Нужен способ без макросов, если такой возможен.
Добрый день! Подскажите пожалуйста решение задачи:Нужно вставить изображения из папки на компьютере в ячейку в книге эксель (например G7) , но так, чтобы картинка изменялась в зависимости от введённого значения в ячейке С2. Не выпадающим списком, а просто вводом значения, например: в ячейку С2 вводим значение 10, а в ячейке G7 появляется изображение image10.jpg, в ячейку С2 вводим значение 8, а в той же ячейке G7 изображение меняется на image8.jpg и т.д.
Я пробовал решить эту задачу с помощью данной статьи: https://www.planetaexcel.ru/techniques/1/14763/, и функционал этого метода меня почти полностью устраивает, это именно то, что мне нужно, кроме того момента, что мне не выпадающий список нужен, а возможность вводить значение в ячейку С2, от которого будет изменяться изображение в ячейке G7. Это часть большего проекта, смысл которого в том, что в ячейка С2 будет ссылаться на другую ячейку, в которой будет появляться некая сумма чисел и в зависимости от этой суммы в документ должно вставляться определённое изображение...
В прикреплённой "Книге1" реализован способ из вышеуказанной статьи, я его вложил в надежде, что может быть там нужно всего лишь добавить пару формул или сделать незначительные изменения.
В прикреплённом файле "post_29533" реализован другой способ, идеальный для меня в моем случае, но он на макросах, а я в них не силен и не представляю как там и что построено.
P. S. Нужен способ без макросов, если такой возможен.mrstyx90
Разбираю Ваш пример из Файл_2, при его воспроизведении на завершающем шаге выдает сообщение о ошибке "Недопустимая ссылка". Версия Microsoft® Excel® для Microsoft 365.
Мистер _Boroda_, укажите пожалуйста, что я делаю не правильно? файл во вложении.
_Boroda_, добрый день!
Разбираю Ваш пример из Файл_2, при его воспроизведении на завершающем шаге выдает сообщение о ошибке "Недопустимая ссылка". Версия Microsoft® Excel® для Microsoft 365.
Мистер _Boroda_, укажите пожалуйста, что я делаю не правильно? файл во вложении.Alexnewakk
_Boroda_, Спасибо! решение приемлемо, однако осталось загадкой от чего в одном случае реализация решения с ссылкой на умную таблицу работает, а в другом нет. Еще раз попробую разобраться в данном вопросе.
Спасибо и хорошего дня!
_Boroda_, Спасибо! решение приемлемо, однако осталось загадкой от чего в одном случае реализация решения с ссылкой на умную таблицу работает, а в другом нет. Еще раз попробую разобраться в данном вопросе.
Private Sub Worksheet_Change(ByVal Target As Range) ' Проверяем, была ли изменена ячейка C3 If Not Intersect(Target, Me.Range("C3")) Is Nothing Then ' Отключаем события, чтобы избежать рекурсии Application.EnableEvents = False
' Получаем значение из ячейки C3 и преобразуем его в Boolean Dim dVal As Boolean dVal = CBool(Me.Range("C3").Value)
' Управляем видимостью картинок If dVal Then Me.Shapes("Picture 22").Visible = True Me.Shapes("Picture 21").Visible = False Else Me.Shapes("Picture 22").Visible = False Me.Shapes("Picture 21").Visible = True End If
' Включаем события обратно Application.EnableEvents = True End If End Sub
[/vba]
Если менять значения вручную: 1/0 или: True/False - работает. Но не получается заставить реагировать на чекбокс. Нужно чтобы была возможнасть и в ручную менять и чекбоксом. Excel действия чекбокс переводит на русский язык, как ЛОЖЬ и ИСТИНА, ну и наверное по-этому не работает. Помогите пожалуйста.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) ' Проверяем, была ли изменена ячейка C3 If Not Intersect(Target, Me.Range("C3")) Is Nothing Then ' Отключаем события, чтобы избежать рекурсии Application.EnableEvents = False
' Получаем значение из ячейки C3 и преобразуем его в Boolean Dim dVal As Boolean dVal = CBool(Me.Range("C3").Value)
' Управляем видимостью картинок If dVal Then Me.Shapes("Picture 22").Visible = True Me.Shapes("Picture 21").Visible = False Else Me.Shapes("Picture 22").Visible = False Me.Shapes("Picture 21").Visible = True End If
' Включаем события обратно Application.EnableEvents = True End If End Sub
[/vba]
Если менять значения вручную: 1/0 или: True/False - работает. Но не получается заставить реагировать на чекбокс. Нужно чтобы была возможнасть и в ручную менять и чекбоксом. Excel действия чекбокс переводит на русский язык, как ЛОЖЬ и ИСТИНА, ну и наверное по-этому не работает. Помогите пожалуйста.AndreiSMT
События Worksheet_Change и Worksheet_Calculate не срабатывают на изменения чекбоксов и связанных с ними ячеек. Нужно назначить им специально предназначенные для них макросы. Для вашего одного флажка это будет примерно так [vba]
Код
Sub Флажок23_Щелчок() If ActiveSheet.CheckBoxes(1).Value > 0 Then 'флажок включен 'здесь код для включенного флажка ' Else 'здесь для выключенного End If End Sub
[/vba] Если таких флажков несколько, то нужно их переименовать, имена должны быть без кириллицы, типа "СhBox_1" и код для каждого флажка будет такой [vba]
Код
Sub ChBox_1_Щелчок() If ActiveSheet.CheckBoxes("ChBox_1").Value > 0 Then 'флажок включен 'здесь код для включенного флажка ' Else 'здесь для выключенного End If End Sub
[/vba]
События Worksheet_Change и Worksheet_Calculate не срабатывают на изменения чекбоксов и связанных с ними ячеек. Нужно назначить им специально предназначенные для них макросы. Для вашего одного флажка это будет примерно так [vba]
Код
Sub Флажок23_Щелчок() If ActiveSheet.CheckBoxes(1).Value > 0 Then 'флажок включен 'здесь код для включенного флажка ' Else 'здесь для выключенного End If End Sub
[/vba] Если таких флажков несколько, то нужно их переименовать, имена должны быть без кириллицы, типа "СhBox_1" и код для каждого флажка будет такой [vba]
Код
Sub ChBox_1_Щелчок() If ActiveSheet.CheckBoxes("ChBox_1").Value > 0 Then 'флажок включен 'здесь код для включенного флажка ' Else 'здесь для выключенного End If End Sub
Странно что чекбокс меняет значение в ячейке, но не применяет его. i691198, спасибо вам большое. Тут примерно тоже самое посоветовали. Добавил вот эту процедуру: [vba]
Код
Private Sub Флажок23_Щелчок() Worksheet_Change Range("C3") End Sub
[/vba]и назначил её на чекбокс.
Странно что чекбокс меняет значение в ячейке, но не применяет его. i691198, спасибо вам большое. Тут примерно тоже самое посоветовали. Добавил вот эту процедуру: [vba]
Код
Private Sub Флажок23_Щелчок() Worksheet_Change Range("C3") End Sub
AndreiSMT, можно и так, если вас это устраивает. Я вам предложил способ, который не требует принудительного вызова еще одного события и не нужно назначать связанные с чекбоксами ячейки, если они нигде не используются в формулах.
AndreiSMT, можно и так, если вас это устраивает. Я вам предложил способ, который не требует принудительного вызова еще одного события и не нужно назначать связанные с чекбоксами ячейки, если они нигде не используются в формулах.i691198