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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 08.10.2008, 15:24   #1
Alesashka
Новичок
Джуниор
 
Регистрация: 08.10.2008
Сообщений: 2
По умолчанию Ошибка 1004

Такой вопрос: внизу приведен текст программы, которая считывает значения из одних ячеек и вписывает их в примечания для других. Вернее, должна так делать . Однако в отмеченном месте выскакивает ошибка 1004. Причем три столбика она создает нормально, потом еще в три (т.е. в 5, 6, 7) вписывает значения 3-го столбца, а потом повисает. Кто-нибудь подскажет, что именно там не так?

Sub Comment()
'On Error Resume Next

Dim M1(27)
M1(1) = "D"
M1(2) = "E"
M1(3) = "F"
M1(4) = "G"
M1(5) = "H"
M1(6) = "I"
M1(7) = "G"
M1(8) = "K"
M1(9) = "L"
M1(10) = "M"
M1(11) = "N"
M1(12) = "O"
M1(13) = "P"
M1(14) = "Q"
M1(15) = "R"
M1(16) = "S"
M1(17) = "T"
M1(18) = "U"
M1(19) = "V"
M1(20) = "W"
M1(21) = "X"
M1(22) = "Y"
M1(23) = "Z"
M1(24) = "AA"
M1(25) = "AB"
M1(26) = "AC"
M1(27) = "AD"

Dim M2(27)
M2(1) = "AG"
M2(2) = "AH"
M2(3) = "AI"
M2(4) = "AJ"
M2(5) = "AK"
M2(6) = "AL"
M2(7) = "AM"
M2(8) = "AN"
M2(9) = "AO"
M2(10) = "AP"
M2(11) = "AQ"
M2(12) = "AR"
M2(13) = "AS"
M2(14) = "AT"
M2(15) = "AU"
M2(16) = "AV"
M2(17) = "AW"
M2(18) = "AX"
M2(19) = "AY"
M2(20) = "AZ"
M2(21) = "BA"
M2(22) = "BB"
M2(23) = "BC"
M2(24) = "BD"
M2(25) = "BE"
M2(26) = "BF"
M2(27) = "BG"

Dim x, y, z1, z2 As Integer
Dim t As String
z1 = 0
For z2 = 1 To 27
x = 190
y = 94
z1 = z1 + 1
Do While y < 114
y = y + 1
t = Range(M2(z2) & y)
x = x + 1
Range(M1(z1) & x).AddComment
Range(M1(z1) & x).Comment.Visible = False
Range(M1(z1) & x).Comment.Text Text:=t
Loop
Next z2
End Sub
Alesashka вне форума
Старый 08.10.2008, 19:24   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Причина - ошибка в коде:

...
M1(6) = "I"
M1(7) = "G"
M1(8) = "K"
...

Правильно будет:
M1(6) = "I"
M1(7) = "J"
M1(8) = "K"

Ошибка 1004 возникала при повторной попытке записи комментария в ячейку G191, в которой уже был комментарий.

Чтобы её избежать, надо перед добавлением комментария к ячейке выполнять проверку: если ли в ней уже комментарии или нет.

Удалить комментарии можно, например, таким способом:
Код:
Sub DeleteAllComments()
 For Each Sh In ActiveWorkbook.Sheets
 Sh.Cells.ClearComments
 Next
 End Sub
Или, по крайней мере, перед строкой Range(M1(z1) & x).AddComment поставить строку Range(M1(z1) & x).ClearComments


Кроме того, конструкцию

Range(M1(z1) & x).AddComment
Range(M1(z1) & x).Comment.Text Text:=t

можно заменить на

Range(M1(z1) & x).AddComment t

Последний раз редактировалось EducatedFool; 08.10.2008 в 19:29.
EducatedFool вне форума
Старый 08.10.2008, 22:15   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

вот еще код, минимум обьявлений, гораздо компактнее и читать проще (кажись ячейки я правильно посчитал):
Код:
Sub AddComm()
Dim c, r As Integer
For c = 4 To 32
  For r = 95 To 113
    Range(Cells(r + 96, c), Cells(r + 96, c)).AddComment Cells(r, c + 29).Value
    Range(Cells(r + 96, c), Cells(r + 96, c)).Comment.Visible = False
  Next
Next
End Sub
а 1004 ошибка появляется еще, когда ячейка, из которой берем комментарий пустая.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 09.10.2008, 11:13   #4
Alesashka
Новичок
Джуниор
 
Регистрация: 08.10.2008
Сообщений: 2
По умолчанию

Благадарю покорно! Заработался!Два раза написать "G")))) А более компактную запись буду осваивать понемногу)) Я вообще инженер электропривода, а программирую потому что сотрудников не хватает((( Приходится тянуть лямку.
Alesashka вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Nero - ошибка драйвера DMA. ошибка CRC NecRoMat Софт 5 09.05.2012 01:29
Ошибка Devourer12345 Microsoft Office Access 2 10.08.2008 20:24
Ошибка Freeman Общие вопросы C/C++ 3 26.05.2008 19:43
Ошибка!! Blackmore БД в Delphi 0 10.05.2008 11:43
Ошибка LeoN Общие вопросы Delphi 5 25.04.2007 11:22