Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 28 мар 2024, 20:31

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)
Размещая ваши вложения на форуме не используйте имена файлов содержащих кириллицу, в противном случае файл будет иметь имя .<расширение файла> !

Для форматирования ваших сообщений используйте BBCodes, описание используемых на форуме BBCodes.



Начать новую тему Ответить на тему  [ Сообщений: 88 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: азы вба
СообщениеДобавлено: 16 май 2012, 06:52 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 14 май 2012, 00:07
Сообщений: 150
Использую Visio c: 2012
Отрасль: Связь
Должность: Ведущий инженер
Уровнь квалификации: Vba, Vb, Java, Java Script
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
здраствуйте наверное это самый тупой вопрос который есть на этом форуме но че то у меня не получается, есть допустим код:
Код:

Public a as integer, b аs integer, c as integer

Sub aaa
a =1
b =2
bbb
End sub

Sub bbb
C =a +b
End sub


Как сделать что бы переменный а и b сохраняли свои значения при входе в саб bbb?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 16 май 2012, 07:09 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
Код:
Dim a As Integer, b As Integer, c As Integer
Sub aaa()
a = 1
b = 2
bbb
End Sub

Sub bbb()
c = a + b
End Sub


в первоначальном коде было 2 ошибки:
1. в фрагменте «b as integer» буква а была русская
2. Ключевое слово Public определяет область видимости процедуры, и не может применяться для определения переменных.
чтобы переменные a и b были видны во всех процедурах, их нужно объявить в самом начале кода

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Последний раз редактировалось Surrogate 16 май 2012, 08:46, всего редактировалось 1 раз.

Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 16 май 2012, 08:46 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 14 май 2012, 00:07
Сообщений: 150
Использую Visio c: 2012
Отрасль: Связь
Должность: Ведущий инженер
Уровнь квалификации: Vba, Vb, Java, Java Script
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Так всё равно а и b в сабе bbb равны empety


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 16 май 2012, 08:54 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
странно, у меня работает и дома (visio2003) и на работе (Visio2010).

в 2003 иногда не работало когда переменные объявляются в одну строку
Код:
Dim a As Integer
Dim b As Integer
Dim c As Integer
Sub aaa()
a = 1
b = 2
bbb
End Sub

Sub bbb()
c = a + b
End Sub


в чистом VisualBasic есть ключевое слово Global для определения видимости переменной во всем приложении, но в VBA это ключевое слово не работает :(

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 16 май 2012, 08:58 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 14 май 2012, 00:07
Сообщений: 150
Использую Visio c: 2012
Отрасль: Связь
Должность: Ведущий инженер
Уровнь квалификации: Vba, Vb, Java, Java Script
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Спасибо всё работает...


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 16 май 2012, 09:29 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 14 май 2012, 00:07
Сообщений: 150
Использую Visio c: 2012
Отрасль: Связь
Должность: Ведущий инженер
Уровнь квалификации: Vba, Vb, Java, Java Script
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
ещё один вопрос из азов
есть 5 юзер форм
в 4 написан код макроса.(разные макросы)
и 1 форма главная на которой 4 кнопки по нажатию на которую должны запускаться макросы.

как это прописать?

код главной юзер формы
Код:
Private Sub CommandButton1_Click()
Load UserForm1
UserForm1.Show
End Sub

Private Sub CommandButton2_Click()

Load UserForm2
UserForm2.Show
End Sub

Private Sub CommandButton3_Click()
Load UserForm5
UserForm5.Show
End Sub


так?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 16 май 2012, 10:23 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
а зачем 4 формы в которых записан код макроса ? если загрузка форм нужна, то перед загрузкой новой формы нужно скрывать или удалять старые. не то каша из форм получится :)
Еще я бы не стал использовать часто ключевое слово Private, иначе процедура с него начинающаяся не будет видна в списке макросов при вызове через Alt+F8

я сделал так
в раздел ThisDocument кинул код
Код:
Sub ololo()
Load UserForm1
UserForm1.Show
MsgBox "TheEnd"
End Sub

а на форму UserForm1
Код:
Private Sub CommandButton1_Click()
MsgBox "Нажата кнопка 1"
' ну или что должно выполняться после нажатия этой кнопки
UserForm1.Hide
End Sub
Private Sub CommandButton2_Click()
MsgBox "Нажата кнопка 2"
' ну или что должно выполняться после нажатия этой кнопки
UserForm1.Hide
End Sub
Private Sub CommandButton3_Click()
MsgBox "Нажата кнопка 3"
' ну или что должно выполняться после нажатия этой кнопки
UserForm1.Hide
End Sub
Private Sub CommandButton4_Click()
MsgBox "Нажата кнопка 4"
' ну или что должно выполняться после нажатия этой кнопки
UserForm1.Hide
End Sub


PS это третий случай в моей практике, когда в коде используются формы :)
так что осваиваем азы вместе ;)

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 16 май 2012, 11:01 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 14 май 2012, 00:07
Сообщений: 150
Использую Visio c: 2012
Отрасль: Связь
Должность: Ведущий инженер
Уровнь квалификации: Vba, Vb, Java, Java Script
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
А что и где нужно прописать в екселе что бы макрос автоматически запускался при открытие екселя?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 16 май 2012, 12:17 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
в области моя книга вставить
Код:
Private Sub Workbook_Open()
newmacro
End Sub
Sub newmacro()
MsgBox "Открыт этот документ, например…"
' или собственно текст макроса
End Sub

Ну и собственно, в параметрах безопасности документа разрешить применение макросов разумеется :)
а то система покоцает наш чудо-макрос

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 16 май 2012, 12:24 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 14 май 2012, 00:07
Сообщений: 150
Использую Visio c: 2012
Отрасль: Связь
Должность: Ведущий инженер
Уровнь квалификации: Vba, Vb, Java, Java Script
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
ещё один вопрос немного не по теме. по шейплисту а как называется параметр который задаёт печатать лист или нет


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 16 май 2012, 12:40 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 14 май 2012, 00:07
Сообщений: 150
Использую Visio c: 2012
Отрасль: Связь
Должность: Ведущий инженер
Уровнь квалификации: Vba, Vb, Java, Java Script
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
А где можно посмотреть ID страницы?
и как отключить автоматическую нумерацию листов? желательно не программно


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 16 май 2012, 13:10 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
egoist писал(а):
ещё один вопрос немного не по теме. по шейплисту а как называется параметр который задаёт печатать лист или нет


в каком смысле не печатать ? Визио будет печатать ВСЕ листы документа, не зависимо видны ли они в списке листов или нет.
это как в анекдоте про суслика :)


egoist писал(а):
А где можно посмотреть ID страницы?
и как отключить автоматическую нумерацию листов? желательно не программно

1. Боюсь, что ни шейпшитом, ни другими свойствами визио никак.
Код:
Sub olo()
Dim pg As Page
For Each pg In ActiveDocument.Pages
Debug.Print "ID:" & pg.ID, pg.Name
Next pg
End Sub
этот макрос, напечатает список ид и имен страниц всего документа
2. Эту нумерацию НЕВОЗМОЖНО отключить

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 16 май 2012, 13:19 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 14 май 2012, 00:07
Сообщений: 150
Использую Visio c: 2012
Отрасль: Связь
Должность: Ведущий инженер
Уровнь квалификации: Vba, Vb, Java, Java Script
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Цитата:
в каком смысле не печатать ? Визио будет печатать ВСЕ листы документа, не зависимо видны ли они в списке листов или нет.
это как в анекдоте про суслика


в смысле 12 листов в документе, где то галочку поставить на определённый лист и этот лист не будет печататься...


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 16 май 2012, 13:33 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
такой настройки нет. если принтер позволяет выбирать диапазон печатаемых листов, то можно

единственный вариант, перевести лист в Background.
Shift+F5, четвертая закладка слева Page Properties, ставим точку рядом с надписью Background.
Страница станет последней по счету и не будет печататься

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 16 май 2012, 14:34 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 14 май 2012, 00:07
Сообщений: 150
Использую Visio c: 2012
Отрасль: Связь
Должность: Ведущий инженер
Уровнь квалификации: Vba, Vb, Java, Java Script
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Цитата:
Код:
Sub olo()
Dim pg As Page
For Each pg In ActiveDocument.Pages
Debug.Print "ID:" & pg.ID, pg.Name
Next pg
End Sub



а куда он их печатает


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 16 май 2012, 15:56 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
в окно Immediate window, его можно вызвать комбинацией клавиш Ctrl+G в окне VBA

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 16 май 2012, 20:15 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 14 май 2012, 00:07
Сообщений: 150
Использую Visio c: 2012
Отрасль: Связь
Должность: Ведущий инженер
Уровнь квалификации: Vba, Vb, Java, Java Script
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
по поводу автозапуска макроса в екселе...что то ни чего не получается...
Раньше была юзер форма в которой было одно поле для ввода числа и одна кнопка которая запуска макрос... Сейчас макросу не нужно ни число ни кнопк. программа выглядела примерно так
Sub common_baton_click1() 'потом заменил на Sub Auto_Oрen()
И в нем куча макросов штук 6
end sub
Я переименовал его как сказали и добавил в эту книгу, но никакого автозапуска нет...в чем проблема?


на картинке видно как ошибку выдаёт


Вложения:
 рисунок.jpg
рисунок.jpg [ 244.09 Кб | Просмотров: 256 ]


Последний раз редактировалось egoist 16 май 2012, 21:31, всего редактировалось 3 раз(а).
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 16 май 2012, 20:25 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 14 май 2012, 00:07
Сообщений: 150
Использую Visio c: 2012
Отрасль: Связь
Должность: Ведущий инженер
Уровнь квалификации: Vba, Vb, Java, Java Script
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
если какие ошибки извините писал с телефона...


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 16 май 2012, 21:12 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 14 май 2012, 00:07
Сообщений: 150
Использую Visio c: 2012
Отрасль: Связь
Должность: Ведущий инженер
Уровнь квалификации: Vba, Vb, Java, Java Script
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
ещё вопросик по екселю

есть код
Код:
Sub Макрос1()
Cells.Find(What:="185", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate

End Sub



который ищет в екселе ячейку допустим с числом 185 как сделать так что бы потом выделилось все остальные столбцы в этой строке(допустим нашёл это число в ячейке А193 а нужно что бы ещё выделилось B193, С193, D193 и присвоил их значение каким нибудь переменным. Но при условии что если число 193 повторяется несколько раз то потом перейти к следущей строке и её переменные тоже при своить каким нибудь переменным.)

помогите пожалуйсто... :cry:


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: азы вба
СообщениеДобавлено: 16 май 2012, 22:42 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 14 май 2012, 00:07
Сообщений: 150
Использую Visio c: 2012
Отрасль: Связь
Должность: Ведущий инженер
Уровнь квалификации: Vba, Vb, Java, Java Script
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
С авто запуском разобрался сам)))Осваение методом "тыка" самое лучшее осваевание))))


Осталось с поиском разобраться(( :cry:

А можно как нибудь удалить в VBA юзерформу и модули пустые?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 88 ]  На страницу 1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB