VBA Создать команду с опциями
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA Создать команду с опциями

VBA Создать команду с опциями

Ответ
Поиск в этой теме
Непрочитано 22.03.2013, 22:12 #1
VBA Создать команду с опциями
shprot
 
Регистрация: 08.02.2011
Сообщений: 33

Здравствуйте.
Как создать команду с опциями (контекстным меню команды.)
Допустим есть команда запускающая макрос

Цитата:
^C^C_-vbarun Module1.Test
Цитата:
Sub Test()
Dim Point1 As Variant
Point1 = ThisDrawing.Utility.GetPoint(, vbCrLf & "точка")
ActiveDocument.ModelSpace.AddPoint (Point1)
End Sub
Нужно что бы после запуска команды и нажатия пр. кнопки имелась возможность выбрать одну из нескольких опций запускающих другой макрос.
Заранее спасибо
Просмотров: 3710
 
Непрочитано 22.03.2013, 22:44
#2
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


справку читай, там все написано
gomer вне форума  
 
Автор темы   Непрочитано 22.03.2013, 23:07
#3
shprot


 
Регистрация: 08.02.2011
Сообщений: 33


Спасибо за конкретный ответ.
shprot вне форума  
 
Непрочитано 22.03.2013, 23:41
#4
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


какой вопрос, такой и ответ<--
gomer вне форума  
 
Автор темы   Непрочитано 23.03.2013, 00:58
#5
shprot


 
Регистрация: 08.02.2011
Сообщений: 33


Опции добавил, но как назначить для них выполнение какой либо процедуры? Видимо через GetInput, но что-то делаю не так
Цитата:
Sub Test()
Dim Point1 As Variant
Point1 = ThisDrawing.Utility.GetPoint(, "Первая точка или [Параметры/Толщина]:")

Dim outStr As Variant
outStr = ThisDrawing.Utility.GetInput()

If outStr = "Параметры" Then
MsgBox outStr
Exit Sub
ElseIf outStr = "Толщина" Then
MsgBox outStr
Exit Sub
End If

ActiveDocument.ModelSpace.AddPoint (Point1)
End Sub
shprot вне форума  
 
Непрочитано 23.03.2013, 02:44
#6
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от shprot Посмотреть сообщение
что-то делаю не так
почитайте внимательно пример, который я вам дал
gomer вне форума  
 
Автор темы   Непрочитано 23.03.2013, 09:12
#7
shprot


 
Регистрация: 08.02.2011
Сообщений: 33


Если использовать в место ввода
Код:
[Выделить все]
  returnPnt = ThisDrawing.Utility.GetPoint(, "Введите точку (Keyword1, Keyword2): ")
делает выбор
Код:
[Выделить все]
returnPnt = ThisDrawing.Utility.GetPoint(, "Введите точку [Keyword1/Keyword2]: ")
То
Код:
[Выделить все]
inputString = ThisDrawing.Utility.GetInput
Почему то всегда возвращает "Keyword1" а на "Keyword2" не реагирует, в чем может быть дело?

Последний раз редактировалось shprot, 23.03.2013 в 09:52.
shprot вне форума  
 
Непрочитано 23.03.2013, 10:53
#8
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от shprot Посмотреть сообщение
Почему то всегда возвращает "Keyword1" а на "Keyword2" не реагирует, в чем может быть дело?
Смотри в настройках, выделено в примере:
Код:
[Выделить все]
Option Explicit
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
' NOTE:
' Go to Tools--> Options --> General tab --> Error Traping --> check "Break on Unhandled Errors"
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'

Sub Example_InitializeUserInput()
    ' Этот пример запрашивает относительно пользовательского ввода точки.
    ' При использовании метода InitializeUserInput, чтобы определить список
    ' ключевого слова, он может также возвратить ключевые слова, введенные
    ' пользователем.
    
    On Error Resume Next
    
    'Определите допустимые ключевые слова
    Dim keywordList As String
    keywordList = "foo bar"
    
    ' Вызовите InitializeUserInput к установке ключевыми словами
    ThisDrawing.Utility.InitializeUserInput 128, keywordList
    
    'Получите пользовательский ввод
    Dim returnPnt As Variant
    returnPnt = ThisDrawing.Utility.GetPoint(, "Введите точку [foo/bar]: ")
    If Err Then
         If StrComp(Err.Description, "User input is a keyword", 1) = 0 Then
         'Одно из ключевых слов было введено
             Dim inputString As String
             Err.Clear
             inputString = ThisDrawing.Utility.GetInput
             MsgBox "Вы ввели ключевое слово: " & inputString
         Else
             MsgBox "Ошибочный выбор точка: " & Err.Description
             Err.Clear
         End If
    Else
        'Отображение координаты точки
        MsgBox "WCS точки: " & returnPnt(0) & ", " & returnPnt(1) & ", " & returnPnt(2), , "GetInput Пример"
    End If
    
End Sub
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 23.03.2013, 17:30
#9
shprot


 
Регистрация: 08.02.2011
Сообщений: 33


Цитата:
Go to Tools--> Options --> General tab --> Error Traping --> check "Break on Unhandled Errors"
Спасибо. Но эта опция была включена и ранее.
shprot вне форума  
 
Непрочитано 23.03.2013, 18:47
#10
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


shprot, опции должны отличаться заглавными буквами в начале слова, например: [Дятел/Дрозд] не катит, а [Дятел/ДРозд] и [Дятел/Филин] уже норм, твои же Keyword* ничем друг от друга не отличаются с точки зрения автокада, поэтому всегда выбирается первый вариант
и еще, пример Олег (jr.) не работает в русском автокаде
gomer вне форума  
 
Автор темы   Непрочитано 23.03.2013, 20:02
#11
shprot


 
Регистрация: 08.02.2011
Сообщений: 33


Цитата:
и еще, пример Олег (jr.) не работает в русском автокаде
Спасибо, я это заметил по:
Код:
[Выделить все]
"User input is a keyword"
К стати в Вашем примере эта ошибка имеет название:
Код:
[Выделить все]
"Пользовательский ввод - ключевое слово"
Но по факту там должно быть:
Код:
[Выделить все]
"Пользователь ввел ключевое слово"
По крайней мере так в AutoCAD 2012 возможно в других версиях по другому.
Код:
[Выделить все]
shprot, опции должны отличаться заглавными буквами в начале слова, например: [Дятел/Дрозд] не катит
Оо, спасибо, теперь все гуд!!
shprot вне форума  
 
Непрочитано 23.03.2013, 21:14
#12
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от gomer Посмотреть сообщение
пример Олег (jr.) не работает в русском автокаде
Никогда не слышал о таком, предпочитаю аглицкий
Олег (jr.) вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA Создать команду с опциями



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBA. Как выбрать директорию на жестком диске, а при неоходимости создать ее. kozaki Программирование 6 21.11.2011 02:20
как с помощью vba создать несколько цифр и вставить их в чертёж... vasyavip Программирование 1 02.04.2009 23:05