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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2018, 04:18   #1
telesh
Новичок
Джуниор
 
Регистрация: 08.05.2018
Сообщений: 2
По умолчанию Событие работает неправильно

Вылезла ошибка, макрос какой то косячный получается, немогу добиться лучшего. При забивании в ячейку L и М должен срабатывать макрос и расчитываться одна строкаа в итоге срабатывает весь макрос до 100 ячейки
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim note As Variant, Sote As Variant, Hote As Variant, L As Variant, M As Variant, score_comment As String
 For I = 1 To 100
L = Range("L" & 2 + I)
M = Range("M" & 2 + I)

Cells(2 + I, 2) = Int(L) 'округляет до целого числа
Cells(2 + I, 5) = Int(M)

Cells(2 + I, 3) = Int((((L - Int(L)) * 10)) + 1)
Cells(2 + I, 6) = Int((((M - Int(M)) * 10)) + 1)
Cells(2 + I, 4) = Round(((L - Int(L)) * 1000))
Cells(2 + I, 7) = Round(((M - Int(M)) * 1000))
Cells(2 + I, 10) = Abs(L - M)
note = Range("J" & 2 + I)
Sote = Range("H" & 2 + I)
Hote = Range("I" & 2 + I)
'Комментарии, основанные на полученной оценке
If note > 0.005 Then
score_comment = "Великолепный бал!"
    ElseIf note > 0.0001 And note <= 0.005 Then
    score_comment = "Хороший бал"
        ElseIf Sote >= 1 Then
    score_comment = "БОЛТОВОЙ"
          ElseIf Hote >= 1 Then
            score_comment = "СВАРНОЙ"
            
 Else
score_comment = ""
End If
  
'Комментарий в ячейке B1
Range("K" & 2 + I) = score_comment
Next
End Sub

_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 08.05.2018 в 11:02.
telesh вне форума Ответить с цитированием
Старый 08.05.2018, 06:54   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Цитата:
Сообщение от telesh Посмотреть сообщение
должен срабатывать макрос и расчитываться одна строкаа в итоге срабатывает весь макрос до 100 ячейки
Ну а что Вы хотели, если
Цитата:
Сообщение от telesh Посмотреть сообщение
For I = 1 To 100
Опишите задачу словами, а не кодом, который работает не как надо.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 08.05.2018, 10:31   #3
telesh
Новичок
Джуниор
 
Регистрация: 08.05.2018
Сообщений: 2
По умолчанию

Идея такая забивая в ячейку L 1данные и макрос работает только на строке A1:K1 затем в L2 и работает макрос A2:K2 и так далее
telesh вне форума Ответить с цитированием
Старый 08.05.2018, 11:14   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от telesh Посмотреть сообщение
Идея такая забивая в ячейку L 1данные и макрос работает только на строке A1:K1 затем в L2 и работает макрос A2:K2 и так далее
Вы просто не понимаете, что такое событие Worksheet_Change, когда оно возникает и что передаётся в качестве параметра (см. ByVal Target As Range )
для начала попробуйте такой макрос:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
  MsgBox "Change in this range (Target) - " & Target.Address
End Sub
Поэтому Ваш макрос надо переписывать. (начать с того, что выкинуть бессмысленный цикл For I.... )

это во-первых.

а во-вторых, если нужно менять ячейки внутри макроса, который срабатывает на изменение ячеек, то нужно отключать срабатывание макроса, а потом включать его.
Код:
Sub Worksheet_Change(ByVal Target As Range)   
Application.EnableEvents = False   

  ..... тут нужные действия с изменением ячеек ....

Application.EnableEvents = True   
End Sub
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Неправильно работает таймер? fanlis Общие вопросы Delphi 12 06.02.2017 09:10
Программа неправильно работает HaKeRR Помощь студентам 1 05.12.2014 23:51
Неправильно работает программа (С#) julia9311 Помощь студентам 0 01.12.2014 02:10
Программа работает неправильно. Настюня Помощь студентам 2 16.06.2012 18:34
Скрипт неправильно работает aleksa76 JavaScript, Ajax 4 21.05.2008 17:47