powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / добавление кнопки с событием в лист Excel
16 сообщений из 16, страница 1 из 1
добавление кнопки с событием в лист Excel
    #39146539
гиней
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кнопку на лист можно добавить кодом из проекта VD2015 несколькими способами
ActiveSheet.Buttons.Add(350, 70, 144, 61.2).Select ' создает кнопку
ActiveSheet.Shapes("Button 1").Select
Как задать кнопке событие, чтобы код был в VB2015 или передать управление из VBA Excelя в
VB2015 ?
...
Рейтинг: 0 / 0
добавление кнопки с событием в лист Excel
    #39146547
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гиней,

для Shapes надо просто прописать для этой кнопки
Код: vbnet
1.
ActiveSheet.Shapes("Button 1").OnAction = "имя макроса"



для ActiveX такой роскоши нет, поэтому там лучше применять модули классов для обработки нажатий кнопок.
...
Рейтинг: 0 / 0
добавление кнопки с событием в лист Excel
    #39147440
гиней
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Макрос это не нужно. Но код макроса можно перенести в код кнопки. Вот в чем вопрос.
...
Рейтинг: 0 / 0
добавление кнопки с событием в лист Excel
    #39150334
гиней
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
привожу код
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Imports Microsoft.Office.Interop.Excel 'Библиотека Excel
Public Class Form1
    Private _xlApplication As New Application 'Приложение Excel
    Private _xlWorkBook As Workbook = _xlApplication.Workbooks.Open("C:\Users\User\Desktop\ГЕН программа\Лист Modul.xlsx") 'Открываем книгу
    Private _xlWorksheet As Worksheet = CType(_xlWorkBook.Worksheets(1), Microsoft.Office.Interop.Excel.Worksheet) 'Первый лист книги

    
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        MessageBox.Show(CStr(_xlWorksheet.Range("A1").Value2), "Текст ячейки A1", MessageBoxButtons.OK, MessageBoxIcon.Information)
        _xlApplication.Visible = True
        Dim Button1 As Button


        _xlWorksheet.Buttons.add(100, 100, 120, 60).Select() 'добавляет кнопку

     
    End Sub


Модератор: Учимся использовать тэги оформления кода - FAQ


Вопрос . Как в этом коде программно придать управление кнопке, которая находится на листе. Т.е. сделать ее с событием?
...
Рейтинг: 0 / 0
добавление кнопки с событием в лист Excel
    #39152843
Фотография alex77755
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНо код макроса можно перенести в код кнопки.
Кнопка созданная таким образом не имеет кода, но ей может быть назначен макрос(процедура)
Отсюда вывод: создавай программно процедуру и назначай кнопке
...
Рейтинг: 0 / 0
добавление кнопки с событием в лист Excel
    #39152983
Фотография alex77755
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
например так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Public Class Form1

    Private _xlApplication, _xlWorkBook

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim ТекстПроцедуры, Q
        _xlApplication = CreateObject("Excel.Application")
        _xlWorkBook = _xlApplication.WorkBooks.add
        _xlApplication.visible = 1

        ТекстПроцедуры = "public Sub QWERT()" & vbCrLf & " MsgBox(""Привет"")" & vbCrLf & "End sub"
        _xlWorkBook.VBProject.VBComponents.Item("ЭтаКнига").CodeModule.AddFromString(ТекстПроцедуры)

        Q = _xlWorkBook.Worksheets(1).Buttons.add(100, 100, 120, 60)
        Q.onaction = "ЭтаКнига.QWERT"

    End Sub
End Class
...
Рейтинг: 0 / 0
добавление кнопки с событием в лист Excel
    #39153119
гиней
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex77755, Спасибо это уже теплее
Только : кнопка на листе нужна!
А процедура и кнопка должны быть в Проекте VS2015
иначе приходиться переписывать макрос.
Через ActiveX у меня не получается, в Shell не силен
А с форумов одни макросы только шлют
...
Рейтинг: 0 / 0
добавление кнопки с событием в лист Excel
    #39153191
Фотография alex77755
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это и есть процедура в VB2010, которая создаёт новую книгу, записывает в неё процедуру, создаёт кнопку на листе 1 и назначает ей созданную процедуру
...
Рейтинг: 0 / 0
добавление кнопки с событием в лист Excel
    #39159881
гиней
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо alex777755
Попытался приспособить твой код Вот так Ниже То есть перевести на процедуру
Он дает сбой
Как подправить?


И к модератору ==>FAQ не понятен



Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ТекстПроцедуры, Q

_xlApplication = CreateObject("Excel.Application")
_xlWorkBook = _xlApplication.WorkBooks.add
_xlApplication.visible = 1

ТекстПроцедуры = "QWERT" 'Это чтобы вызвать процедцру QWERT

'ТекстПроцедуры = "public Sub QWERT()" & vbCrLf & " MsgBox(""Привет"")" & vbCrLf & "End sub" ' Так можно записывать процедуру
_xlWorkBook.VBProject.VBComponents.Item("ЭтаКнига").CodeModule.AddFromString("ТекстПроцедуры")

Q = _xlWorkBook.Worksheets(1).Buttons.add(100, 100, 120, 60)
Q.onaction = "ЭтаКнига.QWERT"

End Sub

Private Sub QWERT()
MsgBox("Привет")
End Sub
...
Рейтинг: 0 / 0
добавление кнопки с событием в лист Excel
    #39159884
гиней
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К модературу Теперь FAQ понятен Только краски не все
...
Рейтинг: 0 / 0
добавление кнопки с событием в лист Excel
    #39159938
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гинейТеперь FAQ понятенотлично, осталось освоить Как мне оформить свое сообщение?
...
Рейтинг: 0 / 0
добавление кнопки с событием в лист Excel
    #39160191
гиней
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Украина alex77755


Хотел подправить твой код Вот так
Переделал текст в процедуру а он дает сбой
а надо в процедуру другую записать Не MSGBOX

Попытался текст привести к FAQ Вот что получается


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ТекстПроцедуры, Q

_xlApplication = CreateObject("Excel.Application")
_xlWorkBook = _xlApplication.WorkBooks.add
_xlApplication.visible = 1

ТекстПроцедуры = "QWERT" 'Это чтобы вызвать процедуру QWERT

'ТекстПроцедуры = "public Sub QWERT()" & vbCrLf & " MsgBox(""Привет"")" & vbCrLf & "End sub" ' Так можно записывать процедуру
_xlWorkBook.VBProject.VBComponents.Item("ЭтаКнига").CodeModule.AddFromString("ТекстПроцедуры")

Q = _xlWorkBook.Worksheets(1).Buttons.add(100, 100, 120, 60)
Q.onaction = "ЭтаКнига.QWERT"

End Sub

Private Sub QWERT()
MsgBox("Привет")
End Sub
...
Рейтинг: 0 / 0
добавление кнопки с событием в лист Excel
    #39160207
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гинейAddFromString("ТекстПроцедуры")Переменные не должны заключаться в кавычки, чтобы передавалось хранимое ими значение, а не их имя:
Код: vbnet
1.
AddFromString(ТекстПроцедуры)



P.S. чую, Вы недалеки от закрытия тем, т.к. коды в сообщениях так и не оформляете нужными тегами(SRC).
...
Рейтинг: 0 / 0
добавление кнопки с событием в лист Excel
    #39160300
гиней
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал через ActivX Считается он лучше. Вот так получилось

Как исправить эту ошибку Q.onaction = "ЭтаКнига.QWERT" [color=red

Private _xlApplication, _xlWorkBook

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ТекстПроцедуры, Q
_xlApplication = CreateObject("Excel.Application")
_xlWorkBook = _xlApplication.WorkBooks.add
_xlApplication.visible = 1

ТекстПроцедуры = "public Sub QWERT()" & vbCrLf & " MsgBox(""Привет"")" & vbCrLf & "End sub"


_xlWorkBook.VBProject.VBComponents.Item("ЭтаКнига").CodeModule.AddFromString(ТекстПроцедуры)


Q = _xlWorkBook.Worksheets(1).OLEObjects.Add("Forms.CommandButton.1")
' Q = _xlWorkBook.Worksheets(1).Buttons.add(100, 100, 120, 60)
'Q.onaction = "ЭтаКнига.QWERT" Здесь указывает ошибку
With Q

.Interior.ColorIndex = 4
.Left = 300
.Top = 0
.Width = 500
.Height = 25
.Object.Caption = "Если Ввод данных завершен! Нажмите здесь" '& vbCrLf &
.Object.BackColor = Color.Red
.Object.Font.size = 16
End With

End Sub
...
Рейтинг: 0 / 0
добавление кнопки с событием в лист Excel
    #39160312
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гиней,

попробуйте все-таки почитать ссылку по оформлению сообщений, которую я дал

или, если осилить FAQ оказалось так сложно, хотя бы нажать "цитировать" и посмотреть, как это делают другие.
...
Рейтинг: 0 / 0
добавление кнопки с событием в лист Excel
    #39160346
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гиней ,

кто Вам сказал, что у объектов ActiveX есть свойство OnAction? Для этих объектов надо событийные процедуры создавать. Но кодом это недоступно, что сводит на нет все Ваши усилия. И тем более кто сказал, что эти элементы считаются лучшими? Microsoft уже давно вообще не рекомендует их использовать. А в прошлом году они выпустили очередное обновление офиса, которое сделало невозможным использовать эти элементы, даже если они были созданы ранее в книге. Они просто не работали. Так что их "лучшесть" у меня под большим сомнением.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / добавление кнопки с событием в лист Excel
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]