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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2012, 20:11   #11
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

А тут что я не так описал? Ругается на "="

Private Sub Worksheet_Calculate()
Dim LastRow&
LastRow = Cells(Rows.Count, "K").End(xlUp).Row
If LastRow = "open" Is Nothing Then
If LastRow = "close" Then
Sheets("PostGrup").Range("A1") = Cells(LastRow, "K" - 10)
End If
End If
End Sub
strannick вне форума Ответить с цитированием
Старый 02.04.2012, 21:06   #12
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Nothing - это свойство объекта.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 02.04.2012, 21:26   #13
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

No comment

Код:
     Dim LastRow&  ' равносильно  As Long
        LastRow = Cells(Rows.Count, "K").End(xlUp).Row' пока единственная правильная строка кода
        If LastRow = "open" Is Nothing Then 'Если число равно тексту и и все это  пустота
                If LastRow = "close" Then        'Если число равно тексту
                        Sheets("PostGrup").Range("A1") = Cells(LastRow, "K" - 10)  '  то строка равна непонятно чему,не то тексту ,не то числу
                End If
        End If
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 02.04.2012, 22:56   #14
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Понял, что смешал переменные с текстом. Спасибо за тычок носом, буду распутывать. Чего-то я сегодня вообще не в теме....
strannick вне форума Ответить с цитированием
Старый 03.04.2012, 12:54   #15
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Тыкните, что я тут попутал?


Private Sub Worksheet_Calculate()
Dim LastRow$
Dim myString1$
Dim myString2$
LastRow = Cells(Rows.Count, 11).End(xlUp).Row
myString1 = "open"
myString2 = "close"
If (LastRow = myString1) Is Nothing Then
If (LastRow = myString2) Then
Sheets("PostGrup").Range("A1") = Cells(LastRow, 2)
End If
End If
End Sub

Опять попутал переменные?
strannick вне форума Ответить с цитированием
Старый 03.04.2012, 13:12   #16
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Если значение последней заполненной ячейки в столбце 11 равно переменной "myString2", то оно однозначно не равно переменной "myString1". Т. е. у Вас лишнее (и синтаксически неправильное) условие. Наверное, Вы имели ввиду это?
Код:
Private Sub Worksheet_Calculate()
    Dim Last As Range, myString2 As String
    Last = Cells(Rows.Count, 11).End(xlUp): myString2 = "close"
    If Last = myString2 Then Sheets("PostGrup").Range("A1") = Cells(Last.Row, 2)
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 03.04.2012, 14:38   #17
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Если значение последней заполненной ячейки в столбце 11 равно переменной "myString2", то оно однозначно не равно переменной "myString1". Т. е. у Вас лишнее (и синтаксически неправильное) условие. Наверное, Вы имели ввиду это?
Код:
Private Sub Worksheet_Calculate()
    Dim Last As Range, myString2 As String
    Last = Cells(Rows.Count, 11).End(xlUp): myString2 = "close"
    If Last = myString2 Then Sheets("PostGrup").Range("A1") = Cells(Last.Row, 2)
End Sub
Не, не так. Видно, я вообще накрутил. Я пытаюсь отловить изменения в ячейках столбца К. Меняются они формулой и принимают значения либо "open", либо "close". Меняться могут в произвольном порядке (то есть "не последнее"). Надо отследить изменение в ячейке, перенести значение второго столбца изменившейся строки на другой лист в ячейку А1:

Sheets("PostGrup").Range("A1") = Cells(Last.Row, 2)
и запустить макрос (ну это я сам допишу).
strannick вне форума Ответить с цитированием
Старый 03.04.2012, 14:48   #18
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Создайте публичный массив, в который берите все подконтрольные данные при открытии книги.
При пересчёте берите их же в другой массив, сравниваете массивы. Определяете изменившиеся ячейки.
Берёте в публичный массив новые данные.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 03.04.2012, 15:30   #19
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Я тут на сайте вот такую конструкцию нашел:


Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("e26:f113", "e1616")) Is Nothing Then Exit Sub
Processing
End Sub

Private Sub Worksheet_Calculate()
Processing
End Sub

Private Sub Processing()
For Each a In Range("G26:G113").Cells
Application.EnableEvents = False
If a.Value = "?????????????" Then a.Value = ""
If (IsError(a.Offset(0, -1)) = False) And (IsError(a.Offset(0, -2)) = False) Then
If (a.Offset(0, -2).Value <> "") And (a.Offset(0, -1).Value <> "") Then
If ((Abs(a.Offset(0, -2).Value) > Range("d16").Value) Or (Abs(a.Offset(0, -1).Value) > Range("e16").Value)) And (a.Value = "") Then
a.Value = "?????????????"
End If
End If
End If
Application.EnableEvents = True
Next
End Sub

Может ее использовать?

Извините, что целиком выложил Вот ссылка нашлась http://programmersforum.ru/showthrea...heet_Calculate

Последний раз редактировалось strannick; 03.04.2012 в 15:34.
strannick вне форума Ответить с цитированием
Старый 03.04.2012, 16:19   #20
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Долго.
И не вижу тут анализа на изменение.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Два одномерных массива A и B. Сформировать два новых массива. Паскаль. Где ошибка в коде? Tomny Помощь студентам 1 27.03.2011 16:47
как запустить два события по onLoad? kirosin JavaScript, Ajax 3 28.10.2010 05:32
в одной ячейке написать два значения с другого листа Наркыз Microsoft Office Excel 6 11.10.2010 14:01
сортировать по фамилии два листа Kotik123 Microsoft Office Excel 2 23.04.2009 18:52
два TMediaPlayer и два AVI-файла zeleniy Компоненты Delphi 0 01.06.2007 14:14