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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2010, 15:52   #1
MrGB
Пользователь
 
Регистрация: 04.07.2010
Сообщений: 32
Вопрос динамическое добавление контролов

как динамически добавлять кнопку и обработчик в определенной столбец, чтобы в каждой ячейки была кнопка.

как добавлять я нашел:
Код:
ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
        , DisplayAsIcon:=False, Left:=10.5, Top:=113.25, Width:=37.5, Height _
        :=9).Select
тут надо задавать координаты, а мне при нажатии на соответствующую кнопку надо будет брать данные из строки. Следовательно нужно знать номер строки.

Заранее спасибо за помощь
MrGB вне форума Ответить с цитированием
Старый 29.10.2010, 16:43   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Посмотрите мой вариант кнопки- невидимки.
Клик по любой ячейке первого листа
Вложения
Тип файла: rar Кнопка.rar (12.4 Кб, 26 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 29.10.2010, 17:12   #3
MrGB
Пользователь
 
Регистрация: 04.07.2010
Сообщений: 32
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Посмотрите мой вариант кнопки- невидимки.
Клик по любой ячейке первого листа
интересное решение. Я немного неправильно выразился - один столбец должен содержать видимые кнопки, если справа от него непустая ячейка.

теперь добавил так (положение задано координатами ячейки):

Код:
ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
        , DisplayAsIcon:=False, Left:=Cells(RowNum, 2).Left, Top:=Cells(RowNum, 2).Top, Width:=37.5, Height _
        :=9).Select
Но это не дает возможность получить номер строки при нажатии кнопки(
MrGB вне форума Ответить с цитированием
Старый 29.10.2010, 17:41   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

А условие на правую ячейку добавляется элементарно.Да и макрос один на все нажатия кнопки
Я не сторонник такого добавления контролов.Через время ваш файл будет весить тонны.да и контролы надо в коллекции заганять
Вложения
Тип файла: rar Кнопка_Part2.rar (12.4 Кб, 21 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 29.10.2010, 18:02   #5
MrGB
Пользователь
 
Регистрация: 04.07.2010
Сообщений: 32
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
А условие на правую ячейку добавляется элементарно.Да и макрос один на все нажатия кнопки
Я не сторонник такого добавления контролов.Через время ваш файл будет весить тонны.да и контролы надо в коллекции заганять
да, насчет веса верно.

возможно тупой вопрос - а как добавить название кнопки в Вашем случае? oShape.TextEffect.Text?
MrGB вне форума Ответить с цитированием
Старый 29.10.2010, 22:06   #6
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Код:
Public Sub DisplayIcon(oSheet As Worksheet, lTop As Long, lLeft As Long, lHeight As Long)
 On Error Resume Next

  Set oShape = oSheet.Shapes.AddShape(msoShapeRectangle, lLeft - 40, lTop, 40, lHeight)

  oShape.Fill.Transparency = 0.5
  oShape.Fill.Solid
  oShape.Fill.Visible = msoCTrue
  oShape.Line.Weight = 0.25
 oShape.Line.ForeColor.SchemeColor = 8
  oShape.Fill.ForeColor.SchemeColor = 52
  
 oShape.DrawingObject.Font.Color = 255
  
oShape.TextEffect.Text = "Привет из Одессы"
  oShape.Placement = xlFreeFloating
  oShape.OnAction = "Command"

     End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 29.10.2010, 22:23   #7
MrGB
Пользователь
 
Регистрация: 04.07.2010
Сообщений: 32
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Код:
Public Sub DisplayIcon(oSheet As Worksheet, lTop As Long, lLeft As Long, lHeight As Long)
 On Error Resume Next

  Set oShape = oSheet.Shapes.AddShape(msoShapeRectangle, lLeft - 40, lTop, 40, lHeight)

  oShape.Fill.Transparency = 0.5
  oShape.Fill.Solid
  oShape.Fill.Visible = msoCTrue
  oShape.Line.Weight = 0.25
 oShape.Line.ForeColor.SchemeColor = 8
  oShape.Fill.ForeColor.SchemeColor = 52
  
 oShape.DrawingObject.Font.Color = 255
  
oShape.TextEffect.Text = "Привет из Одессы"
  oShape.Placement = xlFreeFloating
  oShape.OnAction = "Command"

     End Sub
спасибо большое! у меня наверно текст с фоном сначала сливался. Вроде так же делал.
MrGB вне форума Ответить с цитированием
Старый 01.11.2010, 10:05   #8
MrGB
Пользователь
 
Регистрация: 04.07.2010
Сообщений: 32
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Код:
oShape.DrawingObject.Font.Color = 255
oShape.TextEffect.Text = "Привет из Одессы"
в 2007 работает корректно, а вот в 2003 текст не отображается. Может reference надо указать какой-нибудь?
MrGB вне форума Ответить с цитированием
Старый 01.11.2010, 10:38   #9
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Вот так можно отобразить в 2003
Код:
Public Sub DisplayIcon(oSheet As Worksheet, lTop As Long, lLeft As Long, lHeight As Long)
 On Error Resume Next

  Set oShape = oSheet.Shapes.AddShape(msoShapeRectangle, lLeft - 40, lTop, 200, lHeight)

  oShape.Fill.Transparency = 0.5
  oShape.Fill.Solid
  oShape.Fill.Visible = msoCTrue
  oShape.Line.Weight = 0.25
 oShape.Line.ForeColor.SchemeColor = 8
  oShape.Fill.ForeColor.SchemeColor = 52
   oShape.DrawingObject.Font.Color = 255
  oShape.Placement = xlFreeFloating
  oShape.OnAction = "Command"
   oShape.Select
    Selection.Characters.Text = "Привет из Павлограда"
     End Sub
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 01.11.2010, 10:49   #10
MrGB
Пользователь
 
Регистрация: 04.07.2010
Сообщений: 32
По умолчанию

Цитата:
Сообщение от alex77755 Посмотреть сообщение
Вот так можно отобразить в 2003
Код:
Public Sub DisplayIcon(oSheet As Worksheet, lTop As Long, lLeft As Long, lHeight As Long)
 On Error Resume Next

  Set oShape = oSheet.Shapes.AddShape(msoShapeRectangle, lLeft - 40, lTop, 200, lHeight)

  oShape.Fill.Transparency = 0.5
  oShape.Fill.Solid
  oShape.Fill.Visible = msoCTrue
  oShape.Line.Weight = 0.25
 oShape.Line.ForeColor.SchemeColor = 8
  oShape.Fill.ForeColor.SchemeColor = 52
   oShape.DrawingObject.Font.Color = 255
  oShape.Placement = xlFreeFloating
  oShape.OnAction = "Command"
   oShape.Select
    Selection.Characters.Text = "Привет из Павлограда"
     End Sub
большое спасибо!

Последний раз редактировалось MrGB; 01.11.2010 в 11:05.
MrGB вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TChart, динамическое добавление Series Nigadyai Помощь студентам 10 07.04.2013 10:29
Динамическое добавление компонентов Vigilante Компоненты Delphi 1 21.10.2010 01:28
Динамическое добавление в PopupMenu k1r1ch Общие вопросы Delphi 1 02.10.2009 10:29
Динамическое добавление файлов в программу Crivel Общие вопросы Delphi 1 02.02.2009 18:22
Динамическое добавление в страницу Dj_smart HTML и CSS 11 26.05.2008 22:28