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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2013, 13:34   #21
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
P.S. Хотя у других вон работает)))
Не путайте
Код:
Public Переменная as Тип
и
Код:
Public Const Константа as Тип = Значение
в первом случае получается переменная (то бишь выделенная область памяти, где находится значение), а во втором в каждое выражение подставляется объявленное ранее значение.

Цитата:
Я это уже понял А как быть то?
Изменять логику работы программы так, чтобы не нужно было делать такие извращения.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 13.02.2013, 13:42   #22
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Да, у меня работает. Когда нужно - обращаюсь к листу как писал выше в примере. И то, что это обращение не через константу - совершенно не важно для задачи.
Вам шашечки или ехать?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 13.02.2013, 13:44   #23
Stroy562
Пользователь
 
Регистрация: 14.01.2013
Сообщений: 49
По умолчанию

Да уж Если нужно кучу листов обрабатывать как не меняй логику все одно
Stroy562 вне форума Ответить с цитированием
Старый 13.02.2013, 13:48   #24
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Меня вообще-то не напрягает написать например так:

Код:
with sheets("primer")
.cells(1,1)=""
...
...
end with
И никто ведь не отменяет копипаст
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 13.02.2013, 13:49   #25
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Код:
Public Набор
Private Sub Workbook_Open()
  Набор = Array("Лист1", "Лист2")
  For Each Элемент In Набор
    Sheets(Элемент).[A1] = 1
  Next
  Sheets(Набор(1)).[A2] = 2
End Sub
попробуйте так.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 13.02.2013, 13:50   #26
Stroy562
Пользователь
 
Регистрация: 14.01.2013
Сообщений: 49
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Да, у меня работает. Когда нужно - обращаюсь к листу как писал выше в примере. И то, что это обращение не через константу - совершенно не важно для задачи.
Вам шашечки или ехать?
В вашем случаи если в процедуре то выделяет слово Public и дает ошибку
Invalid attribute

Если в начале модуля выделяет слово Public и дает ошибку
Invalid ouside procedure

Ладно проехали
Stroy562 вне форума Ответить с цитированием
Старый 13.02.2013, 13:53   #27
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Код:
Option Explicit

Public blank As Worksheet


Sub tt()
    Set blank = Worksheets("Бланк")

    MsgBox blank.Name
    MsgBox Sheet2.Name
End Sub

Sub tt2()
    MsgBox blank.Name
    MsgBox Sheet2.Name
End Sub
И никаких ошибок.
Файл не даю - очень секретный
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 13.02.2013, 13:56   #28
Stroy562
Пользователь
 
Регистрация: 14.01.2013
Сообщений: 49
По умолчанию

Цитата:
Сообщение от DiemonStar Посмотреть сообщение
Код:
Public Набор
Private Sub Workbook_Open()
  Набор = Array("Лист1", "Лист2")
  For Each Элемент In Набор
    Sheets(Элемент).[A1] = 1
  Next
  Sheets(Набор(1)).[A2] = 2
End Sub
попробуйте так.
Да я с таким же успехом буду объявлять переменные
Количество кода то не уменьшаетмя
Stroy562 вне форума Ответить с цитированием
Старый 13.02.2013, 14:02   #29
Stroy562
Пользователь
 
Регистрация: 14.01.2013
Сообщений: 49
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Код:
Option Explicit

Public blank As Worksheet


Sub tt()
    Set blank = Worksheets("Бланк")

    MsgBox blank.Name
    MsgBox Sheet2.Name
End Sub

Sub tt2()
    MsgBox blank.Name
    MsgBox Sheet2.Name
End Sub
И никаких ошибок.
Файл не даю - очень секретный
Да все супер
Про Option Explicit Не знал

Спасибо Тема закрыта
Stroy562 вне форума Ответить с цитированием
Старый 13.02.2013, 14:12   #30
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Option Explicit тут совершенно не при чём - просто он/она/оно у меня автоматом ставится
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли задать глобальную переменную из функции или как-то напрямую использовать память для хранения переменных из функции? Suny-o Общие вопросы Delphi 2 14.06.2012 11:45
Предопределение класса clopcad Общие вопросы C/C++ 3 02.12.2011 23:12
Предопределение класса clopcad C++ Builder 0 01.12.2011 21:14
Предопределение iostrem в с++ Паыел Помощь студентам 1 26.10.2010 23:43
Смысл констант Alex Cones Свободное общение 18 29.03.2010 10:09