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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2010, 21:16   #1
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию Почему, ошибка в макросе

Почему, ошибка в макросе?
Так, нет ошибки
Код:
Sub zxc()
   i = 10
      iSum = Range("F" & i) - Range("F" & i - 1)
   MsgBox iSum
End Sub
А так, ошибка, почему? Ведь только в место Range, поставил [ ].
Код:
Sub zxc()
   i = 10
      iSum = [F & i] - [F & i - 1]
   MsgBox iSum
End Sub
valerij вне форума Ответить с цитированием
Старый 26.02.2010, 21:41   #2
Dophin
Форумчанин
 
Аватар для Dophin
 
Регистрация: 13.01.2010
Сообщений: 410
По умолчанию

а Вы знаете что это такое? знаете как используется? Для чего такую запись пытаетесь применить? чтобы красивше было?
Dophin вне форума Ответить с цитированием
Старый 26.02.2010, 21:44   #3
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от Dophin Посмотреть сообщение
чтобы красивше было?
Не, что бы короче, бо очень много, слов Range
valerij вне форума Ответить с цитированием
Старый 26.02.2010, 21:49   #4
Dophin
Форумчанин
 
Аватар для Dophin
 
Регистрация: 13.01.2010
Сообщений: 410
По умолчанию

бумагу чтоли экономите?) зачем короче то? да и вычитывать нормальный код с ранжами проще.

Хотя тут он вообще не нужен, если нужна одна ячейка - дык и обращайтесь к ней напрямую
Цитата:
cells(i,6)
З.Ы. Вы бы лучше сначала переменные научились объявлять
Dophin вне форума Ответить с цитированием
Старый 26.02.2010, 21:56   #5
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от Dophin Посмотреть сообщение
бумагу чтоли экономите?) зачем короче то? да и вычитывать нормальный код с ранжами проще.

Хотя тут он вообще не нужен, если нужна одна ячейка - дык и обращайтесь к ней напрямую
З.Ы. Вы бы лучше сначала переменные научились объявлять
Вы не поняли вопроc??
Я разве спрашивал про cells?
Зачем приводить весь код?
Зачем отвечать, если объяснить не можете ошибку?
valerij вне форума Ответить с цитированием
Старый 26.02.2010, 22:45   #6
Dophin
Форумчанин
 
Аватар для Dophin
 
Регистрация: 13.01.2010
Сообщений: 410
По умолчанию

брр) крайне сложно сформулировать
квадратные скобки возвращают значение имени на листе,

Например по умолчанию имя ячейки А1 - "А1"
[a1] =5 нарисует в ячейке а1 цифру пять

если присвоить ячейке а1 имя "pampam"
то команда
[pampam] = 5 опять же нариcует пятерку в ячейке a1

тоже и по диапазонам.

а если имени нет - то вернет ошибку. Производить вычисления внутри, подставлять переменные внутрь - вроде тоже нельзя, ну я по крайней мере не умею.


Извините если задел, не хотел

упд
(в 2007 над ячейкой А1 есть окошко куда можно вводить адреса ячеек - вот квадратные скобочки это по сути и есть это окошко, введя туда F & 5 Вы поулчите ошибку, а введя F5 - перейдете на ячейку F5)


если очень хочется именно со скобочками то можно назначить диапазону имя
Цитата:
Sub dd()
Dim i as Integer
i = 5
ActiveWorkbook.Names.Add Name:="bumbum", RefersTo:=Sheets(1).Range("F" & i)
[bumbum] = 4
End Sub
хотя конечно лучше и проще через переменную
Цитата:
Sub ee()
Dim i As Integer
Dim rr As Range
i = 5
Set rr = Range("F" & i)
rr = 5
End Sub

Последний раз редактировалось Dophin; 26.02.2010 в 22:59. Причина: дополнение
Dophin вне форума Ответить с цитированием
Старый 26.02.2010, 23:30   #7
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от Dophin Посмотреть сообщение
брр) крайне сложно сформулировать
Да, понимаю в литер. сказано, что запись выражение Range("F5"), равносильна [F5], на ск. короче, но я замечал на практике, что не всегда, равнозначно, но пояснений нигде.
Цитата:
хотя конечно лучше и проще через переменную
Все остальное я в курсе, именно так и делаю
Код:
Cells(14 - yx, "d").Offset(dat * 21) = 0
valerij вне форума Ответить с цитированием
Старый 27.02.2010, 01:01   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

отвечаю на первоначальный вопрос:
потому что, когда вы пишете на ВБА, использовать необходимо синтаксис ВБА, а не, допустим, очень достойного языка С++, и уж тем более не использовать свой собственный синтаксис.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 27.02.2010, 01:48   #9
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
и уж тем более не использовать свой собственный синтаксис.
Игорь, правильно я тебя понял, такого синтаксис, [F & i], в VBA, просто не существует?
valerij вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# Почему выскакивает ошибка. slim>>> Помощь студентам 6 10.02.2010 17:57
Почему ошибка при копировании? valerij Microsoft Office Excel 8 02.05.2009 01:49
почему ошибка??? beygul Помощь студентам 1 15.11.2008 19:46
Почему у мну ошибка??? Altera Общие вопросы Delphi 4 09.03.2008 09:29
Почему ошибка в IBDataSet? 3lander БД в Delphi 3 10.10.2007 11:38