Добрый день участникам форума! Пытаюсь написать код, который выдавал бы окошко с надписью, при наступлении определенного условия, например, заданного значения в ячейке "A1". Вот, что я написал
Quote
Sub На_условие() Dim x x = Sheets(1).Cells("A1") If (x > 0) Then MsgBox "Внимание" End If End Sub
Не работает. Где и в чём ошибка?
Добрый день участникам форума! Пытаюсь написать код, который выдавал бы окошко с надписью, при наступлении определенного условия, например, заданного значения в ячейке "A1". Вот, что я написал
Quote
Sub На_условие() Dim x x = Sheets(1).Cells("A1") If (x > 0) Then MsgBox "Внимание" End If End Sub
1. Событие происходит на этом листе 2. Хз, мы же не знаем как Вы пробовали 3, 4 При выборе объекта Worksheet в VBE в окне Object, по умолчанию прописывается шаблон процедуры SelectionChange: [vba]
Code
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
[/vba]
Private можете убрать, в данном случае это ни на что не влияет
1. Событие происходит на этом листе 2. Хз, мы же не знаем как Вы пробовали 3, 4 При выборе объекта Worksheet в VBE в окне Object, по умолчанию прописывается шаблон процедуры SelectionChange: [vba]
Code
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
[/vba]
Private можете убрать, в данном случае это ни на что не влияетSerge_007
Доброе утро(или другое) всем! В продолжение темы пытаюсь написать что-то путное не выходит. Не знаю в чем дело, по отдельности все работает, собрал в кучу и опять на выходит. Может опять с модулями заморочка?
Code
Sub Worksheet_SelectionChange(ByVal Target As Range) Dim x, Ans x = Sheets("Рабочий лист").Range("AB5") Ans = MsgBox("Есть вариант все исправить", 4, "Талантливому ......") If (x > 4000) Then Ans Select Case Ans Case vbYes Sheets("Архив").Cells(Rows.Count, 1).End(xlUp).EntireRow.ClearContents MsgBox "Последняя запись в архиве очищена" Case vbNo
End Select End Sub
Доброе утро(или другое) всем! В продолжение темы пытаюсь написать что-то путное не выходит. Не знаю в чем дело, по отдельности все работает, собрал в кучу и опять на выходит. Может опять с модулями заморочка?
Code
Sub Worksheet_SelectionChange(ByVal Target As Range) Dim x, Ans x = Sheets("Рабочий лист").Range("AB5") Ans = MsgBox("Есть вариант все исправить", 4, "Талантливому ......") If (x > 4000) Then Ans Select Case Ans Case vbYes Sheets("Архив").Cells(Rows.Count, 1).End(xlUp).EntireRow.ClearContents MsgBox "Последняя запись в архиве очищена" Case vbNo
Sub Worksheet_Change(ByVal Target As Range) Dim x, Ans x = Sheets("Рабочий лист").Range("AB5") If x <= 4000 Then Ans = MsgBox("Есть вариант все исправить", 4, "Талантливому ......") End If Select Case Ans Case vbYes Sheets("Архив").Cells(Rows.Count, 1).End(xlUp).EntireRow.ClearContents MsgBox "Последняя запись в архиве очищена" Case Else End Select End Sub
[/vba]
Подозреваю, что нужно как-то так: [vba]
Code
Sub Worksheet_Change(ByVal Target As Range) Dim x, Ans x = Sheets("Рабочий лист").Range("AB5") If x <= 4000 Then Ans = MsgBox("Есть вариант все исправить", 4, "Талантливому ......") End If Select Case Ans Case vbYes Sheets("Архив").Cells(Rows.Count, 1).End(xlUp).EntireRow.ClearContents MsgBox "Последняя запись в архиве очищена" Case Else End Select End Sub
Sub Worksheet_Change(ByVal Target As Range) Dim x x = Sheets("Рабочий лист").Range("AB5") If x > 4000 Then If MsgBox("Есть вариант все исправить", 4, "Талантливому ......") = vbYes Then Sheets("Архив").Cells(Rows.Count, 1).End(xlUp).EntireRow.ClearContents MsgBox "Последняя запись в архиве очищена" End If End If End Sub
[/vba]
Посмотрите так: [vba]
Code
Sub Worksheet_Change(ByVal Target As Range) Dim x x = Sheets("Рабочий лист").Range("AB5") If x > 4000 Then If MsgBox("Есть вариант все исправить", 4, "Талантливому ......") = vbYes Then Sheets("Архив").Cells(Rows.Count, 1).End(xlUp).EntireRow.ClearContents MsgBox "Последняя запись в архиве очищена" End If End If End Sub
Я думал так:Если x>4000, то выполняется Ans Я и сейчас бы так думал, если не Вы с _Boroda_.
Ваш код работает не так как мне надо. MsgBox срабатывает каждый раз, и при любом изменении значений на листе "рабочий лист", а надо, чтобы только по условию x > 4000. Все равно, большое спасибо.
Jhonson, приветствую,
Quote
Что Вы ждете от этой строчки?
Code
If (x > 4000) Then Ans
Я думал так:Если x>4000, то выполняется Ans Я и сейчас бы так думал, если не Вы с _Boroda_.
Ваш код работает не так как мне надо. MsgBox срабатывает каждый раз, и при любом изменении значений на листе "рабочий лист", а надо, чтобы только по условию x > 4000. Все равно, большое спасибо.Мур