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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2011, 14:21   #1
WizarD.89
Форумчанин
 
Аватар для WizarD.89
 
Регистрация: 02.12.2010
Сообщений: 160
Радость Событие при вставки информации

Здравствуйте!
Существует вот у меня такое событие:

Код HTML:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
With АланизТестирования
    If .ActiveSheet.Name = "Исходная_Таблица" Then
        If GetSetting("Analysis Testing", "general", "auto_fill", "true") = True And Range("a1").value <> "" Then
            Dim daip As Range
            Set daip = Sheets("Исходная_Таблица").Range("Рабочая_зона")
            'проверяет входит выделяная ячейка в правильный диапазон
            On Error Resume Next    'вылетает не понятная ошибка
            If Application.Union(Target, daip).Address = daip.Address Then
                If Err = 1004 Then
                    Exit Sub
                End If
                If Target.Text = "0" Then
                    Target.value = 1
                Else
                    Target.value = 0
                End If
            End If
        End If
    End If
End With
End Sub
Происходит при выделение ячеек в определенном диапозоне, и меняет значение ячейки от 0 на 1 и наоборот. так вот при Копирование информации(Состоящие из значений 1 и 0) из другой таблицы и вставке в этот диапозон , вызывается данное событие и все эти значения снова становятся 0 или 1, тем самым и не происход ВСТАВКИ этих данных. Можно конечно перед вставкой отлючать эту функцию, но может есть другое решение?

Последний раз редактировалось WizarD.89; 12.04.2011 в 14:29.
WizarD.89 вне форума Ответить с цитированием
Старый 12.04.2011, 16:37   #2
аналитика
Форумчанин
 
Регистрация: 14.05.2009
Сообщений: 311
По умолчанию

АланизТестирования - ?
зачем писать обработку события на уровне книги, если она нужна только для одного листа "Исходная_Таблица"? Если только лист создается программно...
ошибка 1004 - внешняя по отношению к VBA - вероятно, попытка объединения диапазонов на разных листах.

если копирование выполняется программно, отключай события:
Application.EnableEvents=False, по завершении включай.
аналитика вне форума Ответить с цитированием
Старый 12.04.2011, 18:42   #3
WizarD.89
Форумчанин
 
Аватар для WizarD.89
 
Регистрация: 02.12.2010
Сообщений: 160
По умолчанию

Цитата:
зачем писать обработку события на уровне книги, если она нужна только для одного листа "Исходная_Таблица"? Если только лист создается программно...
Списобо за отклик, да лист создается программно.


Цитата:
ошибка 1004 - внешняя по отношению к VBA - вероятно, попытка объединения диапазонов на разных листах.
Насчет ошибки.На всех листах в определенном столбце содержиться колонка гиперсылок, которые содержат ссылку на всех листы (которые в свою очередь создаются программно).Было сделано для быстрой навигации так как листов много. А ошибка выходила парой когда ты быстро переходил по этим гиперсылкам. Но думаю сделаю это все подругому, по красивше через ленту.

Цитата:
если копирование выполняется программно, отключай события:
Application.EnableEvents=False, по завершении включай.
нет не программно. это выполняет пользователь, либо нужно создать отдельную кнопку вставить(и события выключать) и как то сделать что бы обычная функция ВСТАВИТЬ не показывалась пользователю. либо как то определять что сейчас идет вставка, и не нужно делать это событие.

Последний раз редактировалось WizarD.89; 12.04.2011 в 20:08.
WizarD.89 вне форума Ответить с цитированием
Старый 13.04.2011, 05:39   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

В Вашем коде строку
Код:
If .ActiveSheet.Name = "Исходная_Таблица" Then
замените на
Код:
If .ActiveSheet.Name = "Исходная_Таблица" And Application.CutCopyMode = False Then
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при запросе вставки. Firebird artemavd БД в Delphi 21 12.09.2010 11:13
builder c++ компонетны которые можно использовать при вставки рисунка tatysya Помощь студентам 3 12.08.2010 20:00
Событие при изменении дерева RIO Общие вопросы Delphi 17 17.05.2010 02:35
Макрос при вставки строк Trimbl Microsoft Office Excel 11 08.02.2010 10:40
Событие при выборе вкладки VistaSV30 Microsoft Office Access 2 25.01.2010 21:11