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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2010, 16:10   #1
zsnini
Новичок
Джуниор
 
Регистрация: 17.03.2010
Сообщений: 4
По умолчанию Макрос не работает с данными результами ссылок

Макрос работает с данными если вводишь данные в ячейки макрос вставляет данные
Макрос не работает с данными если данные результат формулы( в ячейки где формула в исходной таблице в заполняемую таблицу вводит 0)
Вопросы пионера: почему когда сохраняешь файл с макросом на значке файла желтым свитокс восклицательным знаком
Как корректно вставить данный код макроса в другой файл чтоб работал
Вложения
Тип файла: rar макрос1.rar (6.4 Кб, 14 просмотров)

Последний раз редактировалось zsnini; 17.03.2010 в 16:14.
zsnini вне форума Ответить с цитированием
Старый 17.03.2010, 16:38   #2
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Здравствуйте.
  • Первое: сохранять надо-таки в файл "с восклицательным знаком", ибо это есть файл с поддержкой макросов. Иначе все макросы будут удалены.
  • Второе: предположу что макрос у Вас находился по пути - Правый клик мышкой по ярлычку листа-Исходный текст и заголовок был примерно таков - Private Sub Worksheet_Change(ByVal Target As Range)
  • Третье: чтобы процедура помимо ручных изменений отслеживала еще и изменения посредством формул, необходимо добавить такую процедуру(тоже в модуль листа)
    Код:
    Private Sub Worksheet_Calculate()
    
    End Sub
    И в ней прописать необходимые условия, идентичные условиям в первой процедуре.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 17.03.2010, 21:57   #3
zsnini
Новичок
Джуниор
 
Регистрация: 17.03.2010
Сообщений: 4
По умолчанию Добрый вечер

Спасибо The_Prist за ответ.
Если не трудно, не могли бы Вы подсказать правильно ли я понял

Private Sub Worksheet_Calculate()
If Intersect(Target, Range("A3")) Is Nothing Then Exit Sub
Dim x As Range
Set x = Range("A44:B463").Find(Range("A3"). Value)
Range("B7:L23").Copy x.Next
End Sub
(у меня во второй строке указывает ошибку)
С уважением, zsnini
zsnini вне форума Ответить с цитированием
Старый 17.03.2010, 22:04   #4
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Неправильно. Нет переменной Target в процедуре Calculate. Как-то так надо:

Код:
Private Sub Worksheet_Calculate()
Dim x As Range
Set x = Range("A44:B463").Find(Range("A3"). Value)
Range("B7:L23").Copy x.Next
End Sub
Но следует помнить, что данный макрос будет выполняться при каждом пересчете листа. Возможно стоит завести глобальную переменную, которая бы фиксировала последнее значение ячейки "A3" и если оно поменялось уже выполнять макрос. Вроде того:

Код:
Public vVar
Private Sub Worksheet_Calculate()
if Range("A3"). Value = vVar or vVar = "" then exit sub
Dim x As Range
Set x = Range("A44:B463").Find(Range("A3"). Value)
Range("B7:L23").Copy x.Next:vVar = Range("A3"). Value
End Sub
Строка Public vVar должна находиться первой строкой в модуле(ну или как минимум перед всеми процедурами, но никак не между ними!).
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 19.03.2010, 21:21   #5
zsnini
Новичок
Джуниор
 
Регистрация: 17.03.2010
Сообщений: 4
По умолчанию

на последний код вообще ехс не реагирует у меня выпадающий список меняет месяц
zsnini вне форума Ответить с цитированием
Старый 19.03.2010, 21:25   #6
zsnini
Новичок
Джуниор
 
Регистрация: 17.03.2010
Сообщений: 4
По умолчанию

а вот этот код под мои данные как модифицировать
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
On Error Resume Next
If Target.Column = 1 And Target.Row > 1 Then
Select Case MsgBox("Заполнить регистрационную карточку?", vbYesNo + vbQuestion, "Подтвердите действие")
Case vbYes
Cancel = True
Dim sh As Worksheet, c1 As Range: Set sh = ActiveWorkbook.Worksheets("КАРТОЧКА ")
If sh Is Nothing Then Beep 100, 100: MsgBox "Отсутствует лист КАРТОЧКА", vbCritical, "Ошибка": Exit Sub
Set c1 = Target.EntireRow.Cells(1)

' на всякий случай сначала очищаем ячейки (чтобы заведомо избавиться от прежних данных)
sh.Range("RegNumber").FormulaR1C1 = ""
sh.Range("ContractNumber").FormulaR 1C1 = ""
sh.Range("ContractDate").FormulaR1C 1 = ""
sh.Range("RegDate").FormulaR1C1 = ""
sh.Range("Agent").FormulaR1C1 = ""
sh.Range("ContractType").FormulaR1C 1 = ""
sh.Range("DateExpired").FormulaR1C1 = ""

' записываем значения (полям в КАРТОЧКЕ присвоены имена)
sh.Range("RegNumber").Value = c1.Offset(, 0).Value
sh.Range("ContractNumber").Value = c1.Offset(, 1).Value
sh.Range("ContractDate").Value = c1.Offset(, 2).Value
sh.Range("RegDate").Value = c1.Offset(, 3).Value
sh.Range("Agent").Value = c1.Offset(, 4).Value
sh.Range("ContractType").Value = c1.Offset(, 5).Value
sh.Range("DateExpired").Value = c1.Offset(, 6).Value

sh.Activate ' активируем лист КАРТОЧКА
Beep 800, 50
Case Else
Cancel = False
End Select
End If
End Sub
zsnini вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна программа или макрос для печати шаблонов word с данными взятыми из таблицы EXCEL dimatz Microsoft Office Excel 3 05.03.2010 12:17
при переименовании файла не работает макрос akd2009 Microsoft Office Excel 1 02.02.2010 20:34
Не работает макрос на другом компе. Aleksandr Microsoft Office Excel 2 02.10.2009 14:42
Не работает макрос под OpenOffice Sanek_81 Microsoft Office Excel 1 06.08.2009 14:12
Почему не работает простейший макрос? zander Microsoft Office Excel 5 05.02.2009 20:58