Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2010, 10:31   #11
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 844
По умолчанию

В работе мне отлично помогает один скрипт подсказаны здесь же. Жаль нет обратного скрипта.
Решил привести его, может кому так же пригодиться.
Код:
Sub Список_переменных()
    Set NewSheet = Worksheets.Add
    i = 1
    For Each nm In ActiveWorkbook.Names
        NewSheet.Cells(i, 1).Value = nm.Name
        NewSheet.Cells(i, 2).Value = "'" & nm.RefersTo
        i = i + 1
    Next
    NewSheet.Columns("A:B").AutoFit
End Sub
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 13.02.2010, 14:29   #12
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Алексей Евгеньевич,
посмотрите:
http://www.jkp-ads.com/OfficeMarketPlaceNM-EN.asp
http://www.cpearson.com/excel/DefinedNames.aspx
Aent вне форума Ответить с цитированием
Старый 13.02.2010, 18:56   #13
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 844
По умолчанию

Цитата:
Сообщение от Aent Посмотреть сообщение
Интересная програмка, именно то что нужно....
Но у меня что-то не работает. ( Постоянно глючит, вылетает, иногда даже не запускается с сообщением об ошибке. При попытке изменить имя переменной, она его меняет, изменяет все места его использования, но значение переменной изменяет на "v". Тоже самое при попытке изменить значение переменной, программа честно выдает запрос ни подтверждение изменений, но что не введешь, значение всегда становиться "v".
Оно так всегда? Или это что-то у меня?
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 13.02.2010, 19:10   #14
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 844
По умолчанию

Цитата:
Сообщение от Aent Посмотреть сообщение
Версия 3.2 у меня ведет себя гораздо стабильнее, я ее повесил только один раз (правда пришлось при это убивать ексель). Но я не смог в ней изменить имя переменной. В версии 4.0 достаточно было было двойного щелчка на имени, в версии 3.2 это не работает. Но за-то изменять значение переменно можно без проблем.
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 14.02.2010, 01:35   #15
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Автор макроса - Яан Карел (Jan Karel) несколько запутался в национальных клавиатурах.
В версии для офиса 2003, в модуле fxlNameManager, в подпрограмме RedefineAName, в строке с меткой 600
находится код:
Код:
600        SendKeys MakeSendKey(sName) & "{TAB 2}" & "^v~"
,
корректно работающий только если в момент нажатия на кнопку OK в форме переименования была установлена "английская" раскладка клавиатуры.
Таким образом, что бы пользоваться макросом достаточно перед нажатием OK переключаться на английскую раскладку.
Не трудно так же модифицировать код, заменив <CTRL-V> на <SHIFT-INS> для вставки символического значения имени из буфера обмена (и поправив MakeSendKey).
Так же можно поставить перед SendKeys API вызов ActivateKeyboardLayout
Код:
Public Declare Function ActivateKeyboardLayout _
    Lib "user32" (ByVal HKL As Integer, ByVal flags As Integer) As Integer 
'...
Dim rc as integer
'...
rc = ActivateKeyboardLayout(&H409, 0)  'предполагается что в системе 2 языка один из которых английский
Аналогично корректируется переопределение имени (изменение значения).

Я не выкладываю сюда модифицированный модуль только из уважения к авторским правам JKP Application Development Services.
Не могу не заметить, что код макроса достаточно специфичен Этакое спагетти.

Последний раз редактировалось Aent; 14.02.2010 в 03:06.
Aent вне форума Ответить с цитированием
Старый 14.02.2010, 08:15   #16
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 844
По умолчанию

Цитата:
Сообщение от Aent Посмотреть сообщение
Я не выкладываю сюда модифицированный модуль только из уважения к авторским правам JKP Application Development Services. ;)
Не могу не заметить, что код макроса достаточно специфичен ;) Этакое спагетти.
Сегодня еще раз попробовал поставить версию. 4.1. Изменить имя переменной, изменение прошло нормально, только после него скрипт вывалился с ошибкой 384. И далее пару раз не хотел запускаться с ошибкой 422. Правда потом запустился.
Открыть текст кода не удалось, так как он запоролен.
Может кинешь исправленный вариант на tae(очень злая собака)mail15.com?
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 14.02.2010, 08:20   #17
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 844
По умолчанию

Кроме того у меня есть переменная вот с такой формулой. Формируем путь к рабочему каталогу исходя из выбраны параметров на листе "О программе".
Код:
='О программе'!$J$24="Да" 'О программе'!$J$28&":\_Объекты работ\область "&'Исх.данные объекта'!$Q$21&"\район "&'Исх.данные объекта'!$Q$22&"\"&'Исх.данные объекта'!$Q$24&"\"&'Исх.данные объекта'!$Q$25&"\"&'Исх.данные объекта'!$Q$26
В макросе данная формула не отображается (выводиться пустая строчка), как будто переменой ни чего не присвоено.
С уважением, Алексей.

Последний раз редактировалось tae1980; 14.02.2010 в 08:24.
tae1980 вне форума Ответить с цитированием
Старый 14.02.2010, 13:59   #18
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Что бы понять откуда берутся ошибки - выложи пример файла с изменяемыми именами на котором макрос слетает.
И укажи что на что меняешь. То же относится к имени с приведённой выше формулой - без файла не разобраться.
Термин "переменная" здесь не очень применим лучше употреблять термин "имя" (name).
И укажи на какой версии EXCEL работаешь : 2003 - 2007 -2010 beta ?
Можно на asease с_о_б_а_к_а inbox.ru
Попробую исправить и эти ошибки Яана (если они есть).
А стандартный пароль VBA проекта снимается за пять секунд кучей разного софта.
Например, Passware Kit Enterprice 9.3

Последний раз редактировалось Aent; 14.02.2010 в 14:07.
Aent вне форума Ответить с цитированием
Старый 14.02.2010, 15:15   #19
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 844
По умолчанию

Цитата:
Сообщение от Aent Посмотреть сообщение
Что бы понять откуда берутся ошибки - выложи пример файла с изменяемыми именами на котором макрос слетает.
И укажи что на что меняешь. То же относится к имени с приведённой выше формулой - без файла не разобраться.
Термин "переменная" здесь не очень применим лучше употреблять термин "имя" (name).
И укажи на какой версии EXCEL работаешь : 2003 - 2007 -2010 beta ?
Можно на asease с_о_б_а_к_а inbox.ru
Работаю в 2003. Пример файла ушел на почту.
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 14.02.2010, 22:24   #20
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Ответил на E-Mail
Aent вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с переменными PODz Помощь студентам 0 13.11.2009 01:33
Работа с переменными Damhurz PHP 6 13.03.2009 17:35
Работа с переменными Sapsan Общие вопросы C/C++ 2 24.02.2009 20:02
Проблема с переменными. TheWanderer Общие вопросы C/C++ 5 06.10.2008 18:15
Что то не так с переменными.. adwaer Помощь студентам 1 19.06.2008 08:42