Страница: 1 | 2 |
Вопрос: Пару вопросов по работе с меню в Excel
Добавлено: 07.05.05 14:50
Автор вопроса: Den
1.При открытии файла с программой в стандартном меню Excel должно появляться меню с командой , которая предназначена для вызова фор-мы
2.При закрытии файла с программой привнесенный пользовательский интерфейс должен уда-ляться
Ответы
Всего ответов: 19
Номер ответа: 1
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #1
Добавлено: 07.05.05 16:42
Private myitem As CommandBarControl
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
myitem.Delete
End Sub
Private Sub Workbook_Open()
Set myitem = Application.CommandBars("Worksheet Menu Bar".Controls("Правка".Controls.Add(msoControlButton, temporary:=True)
myitem.Caption = "Гы"
myitem.OnAction = "MyMacro"
End Sub
Номер ответа: 2
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #2
Добавлено: 08.05.05 10:46
Модуль ЭтаКнига:
Private Sub Workbook_Open()
AddMenu
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
 elMenu
End Sub
Модуль Модуль1:
Sub AddMenu()
'Создание меню пользователя макроса
With Application.MenuBars(xlWorksheet).Menus.Add("Се&ть"
.MenuItems.Add "Запуск &сервера", "StartServer"
.MenuItems.Add "Запуск &клиента", "StartClient"
End With
End Sub
Sub DelMenu()
'Удаление меню
On Error Resume Next
Application.MenuBars(xlWorksheet).Menus("Се&ть".Delete
End Sub
Номер ответа: 3
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #3
Добавлено: 08.05.05 10:47
Забыл, а UserForm показываются так (в Module1):
UserForm1.Show
End Sub
Private Sub StartClient()
UserForm2.Show
End Sub
Номер ответа: 4
Автор ответа:
Den
Вопросов: 3
Ответов: 5
Профиль | | #4
Добавлено: 09.05.05 01:30
Спасибо Большое за подробный ответ! У меня все получилось!
Подскажите плиз как можно создать книгу с одним листом тоесть автоматически удаляя 2 листа и при этом чтоб не вылетало сообшение о подтверждении удаления. И нелизя пользоваться методом с начала Application.DisplayAllert=false а после удаления опять True. Возможно ли это сделать по другому?
Номер ответа: 5
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #5
Добавлено: 09.05.05 04:19
t=application.sheetsinnewworkbook
application.sheetsinnewworkbook=1
workbooks.add
application.sheetsinnewworkbook=t
Номер ответа: 6
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #6
Добавлено: 09.05.05 16:27
GSerg, всё правильно и корректно, ай да шаман!
Номер ответа: 7
Автор ответа:
Den
Вопросов: 3
Ответов: 5
Профиль | | #7
Добавлено: 09.05.05 19:33
Все работает на ура! Прога у меня почти закончена но хотелось бы сделать пару косметических улучшений(препод просто очень строгий!) но ни как не получается!
1) Мне надо проверить наличие диста в другой книге пробовал вот так:
Dim x As Object
On Error Resume Next
Set x = Workbooks(Fname).Sheets(ShName)
If Err = 0 Then SheetExists = True Else MsgBox ("Net"
' SheetExists = False
End Function
но не получается!
2) Ни как не могу отсортировать массив который состоит из строковых переменных(String) надо их по алфовиту отсортировать!
Буду очень благодарен если поможете с последними вопросами!
Номер ответа: 8
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #8
Добавлено: 09.05.05 20:03
2) Вот один из вариантов:
Dim tmp As String
Dim s(1 To 7) As String
s(1) = "Каждый"
s(2) = "Охотник"
s(3) = "Желает"
s(4) = "Знать"
s(5) = "Где"
s(6) = "Сидит"
s(7) = "Фазан"
For i = 1 To UBound(s) - 1
If s(i) > s(i + 1) Then
tmp = s(i + 1)
s(i + 1) = s(i)
s(i) = tmp
End If
Next i
Номер ответа: 9
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #9
Добавлено: 09.05.05 20:10
1) Правильный ответ смотри в топике про Shape (только малость переделать под Sheet, да это мелочи!):
http://www.vbnet.ru/forum/show.aspx?id=73683
on error resume next
isthere=not where.shapes(shapename) is nothing
end function
Номер ответа: 10
Автор ответа:
Den
Вопросов: 3
Ответов: 5
Профиль | | #10
Добавлено: 10.05.05 03:42
Массив я отсортировал а вот лист ни как не поддается!???
Номер ответа: 11
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #11
Добавлено: 10.05.05 04:29
on error resume next
isthere=not where.worksheets(sheetname) is nothing
end function
Номер ответа: 12
Автор ответа:
ActiveX
Вопросов: 0
Ответов: 73
Профиль | | #12
Добавлено: 10.05.05 07:11
На самом деле, создать книгу с одним листом можно и без использования свойства SheetsInNewWorkbook
Workbooks.Add xlWBATWorksheet '-4167
Номер ответа: 13
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #13
Добавлено: 10.05.05 13:28
ActiveX, откуда такие глубокие познания? И что означает '-4167 ?
Номер ответа: 14
Автор ответа:
ActiveX
Вопросов: 0
Ответов: 73
Профиль | | #14
Добавлено: 10.05.05 13:53
Это числовой эквивалент константы xlWBATWorksheet, а если быть более точным, то это константа в её "явном" виде,
Workbooks.Add -4157 '&HFFFFEFB9
Номер ответа: 15
Автор ответа:
ActiveX
Вопросов: 0
Ответов: 73
Профиль | | #15
Добавлено: 10.05.05 13:55
P.S. Опечатка, конечно,
Workbooks.Add -4167 '&HFFFFEFB9