Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 | 2 |

 

  Вопрос: Пару вопросов по работе с меню в Excel Добавлено: 07.05.05 14:50  

Автор вопроса:  Den
1.При открытии файла с программой в стандартном меню Excel должно появляться меню с командой , которая предназначена для вызова фор-мы
2.При закрытии файла с программой привнесенный пользовательский интерфейс должен уда-ляться

Ответить

  Ответы Всего ответов: 19  

Номер ответа: 1
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #1 Добавлено: 07.05.05 16:42
Option Explicit

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-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #2
Добавлено: 08.05.05 10:46
Модуль ЭтаКнига:
Option Explicit
Private Sub Workbook_Open()
    AddMenu
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ;DelMenu
End Sub

Модуль Модуль1:
Option Explicit
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-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #3
Добавлено: 08.05.05 10:47
Забыл, а UserForm показываются так (в Module1):
Private Sub StartServer()
  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
dim t as long

t=application.sheetsinnewworkbook
application.sheetsinnewworkbook=1
workbooks.add
application.sheetsinnewworkbook=t

Ответить

Номер ответа: 6
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #6
Добавлено: 09.05.05 16:27
GSerg, всё правильно и корректно, ай да шаман! :)

Ответить

Номер ответа: 7
Автор ответа:
 Den



Вопросов: 3
Ответов: 5
 Профиль | | #7 Добавлено: 09.05.05 19:33
Все работает на ура! Прога у меня почти закончена но хотелось бы сделать пару косметических улучшений(препод просто очень строгий!) но ни как не получается!
1) Мне надо проверить наличие диста в другой книге пробовал вот так:
Private Function SheetExists() As Boolean    Workbooks(Fname).Activate
   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-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #8
Добавлено: 09.05.05 20:03
2) Вот один из вариантов:
Dim i As Integer
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-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #9
Добавлено: 09.05.05 20:10
1) Правильный ответ смотри в топике про Shape (только малость переделать под Sheet, да это мелочи!):

http://www.vbnet.ru/forum/show.aspx?id=73683

function IsThere(byval Where as worksheet, byval ShapeName as string) as boolean
  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
function IsThere(byval Where as workbook, byval SheetName as string) as boolean
  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-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #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

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам