Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2009, 15:04   #1
MANZZz
 
Регистрация: 31.03.2009
Сообщений: 4
По умолчанию Управление атрибутами (изображения) из TextBox

Добрый день.
Буду признателен, если поможете решить такую задачу:

Есть Excel файл. В TextBox вводится значение. В зависимости от значения должно быть то или иное изображение (ранее была похожий вопрос с картинкой мобильного телефона в зависимости от того что было выбрано в выпадающем меню - похоже но не то). Изображение желательно что бы было в том же Эксель файле (а не ссылка). Я решил реализовать через атрибут изображения Visible = True/False. Для примера приложил файл. Задача: если TextBox1 = "1" Then Image1 - видимый, если TextBox1 = "2" Then Image2 - видимый. Возможно вопрос легкий, но я не знаю синтаксис. Заранее спасибо.
Мансур.
P.S. необходимо именно в макросе
Вложения
Тип файла: rar Example_Visible.rar (11.5 Кб, 20 просмотров)
MANZZz вне форума Ответить с цитированием
Старый 31.03.2009, 23:27   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Попробуйте такой вариант:

Код:
Public Sub check(ByVal txt As String)
    Select Case txt
        Case 1: TextBox2 = "Odin": ПоказатьКартинку txt
        Case 2: TextBox2 = "Dva": ПоказатьКартинку txt
        Case Else: TextBox2 = "": ПоказатьКартинку txt
    End Select
End Sub

Sub ПоказатьКартинку(ByVal txt As String)
    Dim sha As Shape: Dim sh As Worksheet: Set sh = ActiveSheet
    ' Останутся видимыми только те картинки, имя которых имеет вид "Image" & txt
    For Each sha In sh.Shapes
        If sha.Name Like "Image*" Then sha.Visible = sha.Name Like "Image" & txt
    Next
End Sub

Private Sub ComboBox1_Change():    check Me.ComboBox1.Value: End Sub
Private Sub TextBox1_Change():    check Me.TextBox1.Text: End Sub
Изменять значение можно как в текстбоксе, так и в комбобоксе.

Пример во вложении:
Вложения
Тип файла: rar Example_Visible.rar (14.5 Кб, 34 просмотров)
EducatedFool вне форума Ответить с цитированием
Старый 02.04.2009, 08:18   #3
MANZZz
 
Регистрация: 31.03.2009
Сообщений: 4
По умолчанию Спасибо за ответ

Буду пробовать.
MANZZz вне форума Ответить с цитированием
Старый 06.06.2009, 14:15   #4
MANZZz
 
Регистрация: 31.03.2009
Сообщений: 4
По умолчанию Поиск соответствующего изобр. со второго листа

Добрый день.
Не удобно просить в очередной раз о помощи не сделав ничего хорошего )
В целом у меня все получилось, работало, пока начальству не захотелось большего...
У меня задача усложнилась, суть вопроса:
1. на одном листе Excel - есть TextBox
2. на втором листе две колонки - наименование, и изображение (соответсвующее названию)
Задача: в textbox вводится значение, рядом появляется соответсвующее изображение (со второго листа).

Просмотрел темы http://programmersforum.ru/showthread.php?t=45170 а так же нашел похожую информацию http://www.planetaexcel.ru/tip.php?aid=57 но все равно не получается. Можно попросить вас еще раз помочь?

Может вам сервис придумать куда можно материальную помощь оказывать, когда интеллектуально не получается ) хоть смс бы скинул или вебмани )
Вложения
Тип файла: rar Вставка изображения.rar (57.3 Кб, 22 просмотров)
MANZZz вне форума Ответить с цитированием
Старый 06.06.2009, 15:07   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Цитата:
У меня задача усложнилась
Действительно, усложнилась...
Вот если бы картинки были в виде файлов - всё было бы очень просто.
Тогда хватило бы одной строки кода типа этой:
Me.Image1.Picture = LoadPicture(ИмяФайла)

С картинками, расположенными на листе Excel, работать сложнее.
Чтобы выдрать с них изображение, надо сначала скопировать его в буфер обмена, а потом
1) либо сразу вставлять на другой лист, но в ячейку, а не в элемент Image1
2) либо сохранять из буфера обмена во временный файл, а потом уже из файла вставлять в элемент Image1

И зачем на первом листе именно Textbox?
Не проще ли использовать Combobox, чтобы не вводить названия картинок вручную, а выбирать из выпадающего списка?

Да и если уж так необходимо работать с картинками, расположенными на листе, желательно, чтобы левый верхний угол картинки попадал в соответствующую ячейку. (В Вашем примере рисунок зайца немного сдвинут вверх)

Вообще, имеет смысл поискать другое решение задачи (можно сделать всё намного удобнее и проще)
На примере с зайцами я не совсем понимаю, чего Вы пытаетесь добиться.

Если есть возможность разговаривать через Скайп - звоните (объясните на примере реального файла, чего Вы хотите добиться)

Посмотрите ещё эту тему: http://www.programmersforum.ru/showp...94&postcount=5
EducatedFool вне форума Ответить с цитированием
Старый 06.06.2009, 16:47   #6
MANZZz
 
Регистрация: 31.03.2009
Сообщений: 4
По умолчанию

Я пока прикину как сделать правильней ) Спасибо за помощь!
Вложения
Тип файла: rar Изображение работы.rar (80.3 Кб, 10 просмотров)
MANZZz вне форума Ответить с цитированием
Старый 06.06.2009, 17:23   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Может, всё-таки будем вставлять изображение непосредственно на лист?

В этом случае всё просто. Вот весь код:
Код:
Private Sub TextBox1_Change()
    On Error Resume Next: Dim cell As Range, sha As Shape
    For Each sha In Me.Shapes:
        If sha.TopLeftCell.Address = Me.Range("f4").Address Then sha.Delete
    Next sha

    If Len(Trim(Me.TextBox1)) = 0 Then Exit Sub
    Set cell = sh.Range("b:b").Find(Me.TextBox1, , , xlWhole)
    If cell Is Nothing Then Exit Sub
    For Each sha In sh.Shapes
        If sha.TopLeftCell.Address = cell.Next.Address Then
            sha.Copy: Me.Range("f4").PasteSpecial:
        End If
    Next sha
End Sub
Пример во вложении.
(замените в текстбоксе слово заяц на слово тигр)
Вложения
Тип файла: rar Вставка изображения.rar (62.8 Кб, 34 просмотров)
EducatedFool вне форума Ответить с цитированием
Старый 06.06.2009, 18:09   #8
roplius
Пользователь
 
Регистрация: 06.05.2009
Сообщений: 15
По умолчанию

Примерно так без макросов
Вложения
Тип файла: zip Вставка изображения.zip (120.8 Кб, 17 просмотров)
roplius вне форума Ответить с цитированием
Старый 05.02.2010, 02:43   #9
mihsel
Пользователь
 
Регистрация: 09.04.2009
Сообщений: 14
По умолчанию

А просто стрелочку
Вложения
Тип файла: zip Вставка изображения.zip (220.9 Кб, 8 просмотров)
mihsel вне форума Ответить с цитированием
Старый 05.02.2010, 13:37   #10
mihsel
Пользователь
 
Регистрация: 09.04.2009
Сообщений: 14
По умолчанию для EducatedFool

Вот примерно то што я хочу сделать!
Спасибо!
Вложения
Тип файла: rar Вставка изображения.rar (90.3 Кб, 14 просмотров)
mihsel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
cmd to textbox - C# TaTT DoGG Общие вопросы .NET 8 26.11.2008 18:16
Чтение изображения из базы данных, Вместо изображения - "System.Byte[]" ruelCrow Общие вопросы .NET 3 10.07.2008 23:29
текст в TextBox-е Bezdar Microsoft Office Excel 2 04.06.2008 09:16
TextBox Freeman Общие вопросы C/C++ 3 28.05.2008 00:56
объявить класс для описания клиеннтского потока. с атрибутами String. Sargon Работа с сетью в Delphi 4 23.12.2007 23:36