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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2010, 05:51   #1
eclat
Пользователь
 
Регистрация: 01.08.2010
Сообщений: 19
По умолчанию Как "прикрепить" код к определенным ячейкам?

Здравствуйте!

Ситуация такая - необходимо, чтобы картинки на лист вставлялись в 4 определенных диапазона B4:D14, B16:D26, B28:D38, B40:D50

Для одного диапазона я код вывела с горем пополам, а вот как сделать так, чтобы код распространялся на остальные, не могу сообразить.
Зависимость между диапазонами получается такая 12*n - 11, если n - порядковый номер картинки

Вот код для кнопки:

Sub TestCommandButton1_Click()
Dim picToOpen As String
picToOpen = Excel.Application.GetOpenFilename(" Bilddateien(*.jpg), *.jpg")
If picToOpen <> "" Then CommandButton1_Click picToOpen, _
Range("B4:D14")
End Sub

Sub CommandButton1_Click(PictureFileNam e As String, TargetCells As Range)
' inserts a picture and resizes it to fit the TargetCells range
Dim p As Object, t As Double, l As Double, w As Double, h As Double
If TypeName(ActiveSheet) <> "Worksheet" Then Exit Sub
If Dir(PictureFileName) = "" Then Exit Sub
' import picture
Set p = ActiveSheet.Pictures.Insert(Picture FileName)
' determine positions
With TargetCells
t = .Top
l = .Left
w = .Offset(0, .Columns.Count).Left - .Left
h = .Offset(.Rows.Count, 0).Top - .Top
End With
' position picture
With p
.Top = t
.Left = l
.Width = w
.Height = h
End With
Set p = Nothing
End Sub

Private Sub CommandButton3_Click()
Unload Me
End Sub

Надеюсь на Вашу помощь!
eclat вне форума Ответить с цитированием
Старый 22.08.2010, 09:55   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

1.Непонятно. Одну картинку сразу в 4 места?
И всёж неплохо пример с кнопками хотя бы приложить, а лучше и с картинками

2.Или Вы хотите 4 раза открывать картинки, и чтоб они каждый раз вставлялись в разные места?
3.Или Вы хотите сразу выбрать 4 картинки из одной папки, и чтоб их раскидало?

Если 2., то:
Код:
Public ind As Long

Sub tt()
Dim picToOpen As String
picToOpen = Excel.Application.GetOpenFilename(" Bilddateien(*.jpg), *.jpg")
If picToOpen <> "" Then
n = 12 * (ind + 1) - 11: ind = ind + 1
ommandButton1_Click picToOpen, _
Range(Cells(n, 2), Cells(n + 10, 4))
End If
End Sub
Код в модуле, название CommandButton не нравится, изменил. Понятно, что это заготовка, но работает, проверено.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 22.08.2010 в 10:27.
Hugo121 вне форума Ответить с цитированием
Старый 22.08.2010, 16:00   #3
eclat
Пользователь
 
Регистрация: 01.08.2010
Сообщений: 19
По умолчанию

Попробовала ваш код, у меня выдается ошибка. Пишет n not defined в строке с уравнением.

Попытаюсь в картинках пояснить, что я хочу сделать

1.Захожу на лист Popis, нажимаю на commandbutton "В",


2.На кнопке для выбора картинок нажимаю раскрывающуюся папку


3.Выбираю нужную картинку.


4. Повторяю шаг 2. и 3. еще 3 раза
5. Завершаю выбор, нажав "крестик".

6. Таким образом я выбираю 4 разных картинки, которые должны встать затем на свои места, т.е. заданные диапазоны.


Прилагаю файл Excel.
Вложения
Тип файла: rar Рабочая v.1.2.rar (292.3 Кб, 9 просмотров)

Последний раз редактировалось eclat; 22.08.2010 в 16:06.
eclat вне форума Ответить с цитированием
Старый 22.08.2010, 19:57   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Да, работа проведена большая
Ну а я особо ничего не менял, только диапазон чуть подвинул - в первом примере был другой.
Не стал прикладывать файл, уж больно здоровый...
Замените в коде формы всё сверху до
Sub CommandButton1_Click(PictureFileNam e As String, TargetCells As Range)
на
Код:
Option Explicit
Public ind As Long

Sub TestCommandButton1_Click()
Dim picToOpen As String, n As Integer
picToOpen = Excel.Application.GetOpenFilename(" Bilddateien(*.jpg), *.jpg")
If picToOpen <> "" Then
n = 12 * (ind + 1) - 11: ind = ind + 1
CommandButton1_Click picToOpen, _
Range(Cells(n + 3, 2), Cells(n + 13, 4))
End If
End Sub
Вообще-то можно сразу выбрать 4 картинки, если они в одной папке, и они встанут по местам. Правда, я не уверен, что в порядке выбора, это надо тестить. Ну и для этого надо немного переделать диалог выбора картинок, а дальше цикл по массиву выбранных.

P.S. А вот кстати и сделал, вот это прикладываю, там ещё немного типы переменных изменились. Выбирайте сразу 4 фотки, вроде в порядке выбора размещает.
Вложения
Тип файла: rar Рабочая v.1.3.rar (289.4 Кб, 13 просмотров)
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 22.08.2010 в 20:23. Причина: Добавил V.1.3
Hugo121 вне форума Ответить с цитированием
Старый 22.08.2010, 20:04   #5
eclat
Пользователь
 
Регистрация: 01.08.2010
Сообщений: 19
По умолчанию

Работает! Спасибо огромное!

Вот еще вопрос. Допустим если я захочу начать применять код с другой ячейки, например не с B4, а с В10, но с той же зависимостью диапазонов. Что я должна поменять в коде?

Последний раз редактировалось eclat; 22.08.2010 в 20:14.
eclat вне форума Ответить с цитированием
Старый 22.08.2010, 20:21   #6
eclat
Пользователь
 
Регистрация: 01.08.2010
Сообщений: 19
По умолчанию

Уже сама разобралась, спасибо еще раз!
eclat вне форума Ответить с цитированием
Старый 22.08.2010, 20:26   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Гляньте выше, я там мультивыбор добавил. Да, и тогда Public ind As Long уже не надо, можно в форму перетащить. - уже спохватился, передумал. Оставить публичной, что можно было и по одной, а затем по две, затем опять по одной тянуть.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 22.08.2010 в 20:58.
Hugo121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
Как убрать Надпись "Код"? Милана666 БД в Delphi 3 20.05.2010 11:24
"ОКРВВЕРХ", "ОКР", "ЕСЛИ". Как бы их связать. Каравай Microsoft Office Excel 13 17.02.2010 09:53
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Переход по "ячейкам" матрицы LiaBerk Помощь студентам 0 13.06.2009 15:29