![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Форумчанин
Регистрация: 03.04.2009
Сообщений: 412
|
![]()
Примерно так:
Sub Worksheet_Activate() i = 1 Do While Cells(i, 1) <> "" If Sheets("Лист1").Cells(i, 1).Value <> Sheets("Лист2").Cells(i, 1).Value Then GoTo 10 Sheets("Лист1").Cells(i, 3) = Val(Sheets("Лист1").Cells(i, 2)) - Val(Sheets("Лист2").Cells(i, 2)) 10 i = i + 1 Loop End Sub |
![]() |
![]() |
![]() |
#12 |
Пользователь
Регистрация: 12.05.2009
Сообщений: 18
|
![]()
данный код не работает
![]() |
![]() |
![]() |
![]() |
#13 |
Форумчанин
Регистрация: 03.04.2009
Сообщений: 412
|
![]()
Проверьте, у меня работает без проблем.
|
![]() |
![]() |
![]() |
#14 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
Вот так тоже будет работать:
Код:
|
![]() |
![]() |
![]() |
#15 |
Пользователь
Регистрация: 12.05.2009
Сообщений: 18
|
![]()
вроде бы все делаю так же,а ошибку найти не могу
![]() |
![]() |
![]() |
![]() |
#16 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
Странный у Вас какой-то файл...
Я заменил Ваш макрос на более простой: Код:
(у меня Excel 2003) Впервые с таким сталкиваюсь. Посоветовать могу только перенести таблицы из этого файла в новый. |
![]() |
![]() |
![]() |
#17 |
Форумчанин
Регистрация: 03.04.2009
Сообщений: 412
|
![]()
Вы не тот столбец отнимаете:
Sheets("Штатное расписание").Cells(i, 3) = Val(Sheets("Штатное расписание").Cells(i, 2)) - Val(Sheets("Физические лица").Cells(i, 3)) |
![]() |
![]() |
![]() |
#18 |
Пользователь
Регистрация: 12.05.2009
Сообщений: 18
|
![]()
про столбец да...не так формулу написала ((
исправила код: Private Sub CommandButton1_Click() With Sheets("Штатное расписание") i = 2 Do While Sheets("Физические лица").Cells(i, 2) <> Sheets("Штатное расписание").Cells(i, 1) Sheets("Штатное расписание").Cells(i, 3) = Val(Sheets("Штатное расписание").Cells(i, 2)) - Val(Sheets("Физические лица").Cells(i, 3)) i = i + 1 Loop End With End Sub получается, что теперь программа сравнивает только i-ую строку обеих страниц...а нужно,чтобы сравнивала каждую строку второй с каждой строкой первой...переделала следующим образом: Private Sub CommandButton1_Click() i = 3 j = 2 Do While Sheets("Физические лица").Cells(i, 2) <> "" If Sheets("Физические лица").Cells(i, 2).Value = Sheets("Штатное расписание").Cells(j, 1).Value Then Sheets("Штатное расписание").Cells(j, 3) = Val(Sheets("Штатное расписание").Cells(j, 2)) - Val(Sheets("Физические лица").Cells(i, 3)) i = i + 1 j = j + 1 End If Loop End Sub теперь эксель виснет....как изменить код? ![]() |
![]() |
![]() |
![]() |
#19 |
Пользователь
Регистрация: 12.05.2009
Сообщений: 18
|
![]()
вот так эксель не виснет:
Private Sub CommandButton1_Click() i = 3 j = 2 Do While Sheets("Физические лица").Cells(i, 2) <> "" If Sheets("Физические лица").Cells(i, 2).Value <> Sheets("Штатное расписание").Cells(j, 1).Value Then GoTo 10 Sheets("Штатное расписание").Cells(j, 3) = Val(Sheets("Штатное расписание").Cells(j, 2)) - Val(Sheets("Физические лица").Cells(i, 3)) 10 i = i + 1 j = j + 1 Loop End Sub но и правильно не считает (( |
![]() |
![]() |
![]() |
#20 |
Форумчанин
Регистрация: 03.04.2009
Сообщений: 412
|
![]()
sttafi, у Вас не совсем верно организован цикл проверки. Если подождёте чуток, попробую нарисовать.
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Подсчет суммы в DBGrid | girz | БД в Delphi | 3 | 16.05.2009 14:11 |
подсчет ячеек в зависимости от даты | Алексей777 | Microsoft Office Excel | 4 | 20.02.2009 13:48 |
Подсчет суммы | Kardi | PHP | 0 | 23.11.2008 16:46 |
Удалить строку листа Excel при выполнении условия | Gennady | Microsoft Office Excel | 14 | 18.12.2007 13:54 |