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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2015, 11:46   #1
dimixix
 
Регистрация: 28.09.2015
Сообщений: 3
По умолчанию Заполнение последующей ячейки по данным предыдущей

Доброго времени суток. Нужна помощь. Задача: заполнять ячейку ниже по данным ячейки выше в диапазоне от 31 по 41 ячейку. Например с 31 по 36 ячейки заполняются вручную произвольными значениями, а ячейки от 37 по 41 должны заполниться значением 36 ячейки. А у меня все заполняет по значению 31 ячейки

Код:
Private Sub CommandButton1_Click()

For i = 31 To 41

If Cells(i, 18) = 0 Then
                              
Cells(i + 1, 18) = 0

Else

Cells(i + 1, 18) = Cells(i, 18)

End If

Next i

End Sub

Последний раз редактировалось Stilet; 16.10.2015 в 12:14.
dimixix вне форума Ответить с цитированием
Старый 16.10.2015, 12:55   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Код:
Sub dimixix()
  On Error Resume Next
  With Range(Cells(31, 18), Cells(41, 18))
    .SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
    .Value = .Value
  End With
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 16.10.2015, 13:44   #3
dimixix
 
Регистрация: 28.09.2015
Сообщений: 3
По умолчанию

Спасибо за помощь, пока ждал придумал вот такой код и он заработал. Как думаете, подойдет?

Private Sub Workbook_Open1()
For i = 31 To 40
If Cells(i + 1, 18) = "" Then
Cells(i + 1, 18) = Cells(i, 18)
End If
If Cells(i + 1, 19) = "" Then
Cells(i + 1, 19) = Cells(i, 19)
End If

Next i

End Sub
dimixix вне форума Ответить с цитированием
Старый 16.10.2015, 15:34   #4
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Наверно да, но:
1. автоматически при открывании книги он выполняться не будет, т.к. в названии процедуры есть "1";
2. если поправите название, код будет работать с листом, который окажется текущим на момент открывания книги. Если в книге больше одного листа, это может привести к обработке не того листа и соответственно к порче данных.

Чтобы в моем коде обработать два столбца, достаточно одно из чисел "18" заменить на "19".
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 16.10.2015, 17:43   #5
dimixix
 
Регистрация: 28.09.2015
Сообщений: 3
По умолчанию

Спасибо за помощь. Сейчас я запускаю заполнение при помощи кнопки. Меня смутили разговоры об запуске на конкретном листе. Достаточно будет вместо единички прописать название листа, чтобы правильно работал код? И еще, что хочется понять - это как сделать данный код для 10 табличек? Сейчас я просто копирую и создаю ниже новый макрос, но наверное, это не правильно.
dimixix вне форума Ответить с цитированием
Старый 16.10.2015, 19:16   #6
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Достаточно будет вместо единички прописать название листа, чтобы правильно работал код?
Нет. Нужно либо выбрать нужный лист, тогда Cells без указания принадлежности будут относиться к этому листу
Код:
Private Sub Workbook_Open()
  Sheets("Лист2").Select
  'и т.д.
Либо явно указывать принадлежность каждой ячейки
Код:
Private Sub Workbook_Open()
Dim s As Worksheet
  Set s = Sheets("Лист2")
  For i = 31 To 40
    If s.Cells(i + 1, 18) = "" Then s.Cells(i + 1, 18) = s.Cells(i, 18)
    If s.Cells(i + 1, 19) = "" Then s.Cells(i + 1, 19) = s.Cells(i, 19)
  Next i
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнение ячейки значением из другой ячейки при условии freeman073 Microsoft Office Excel 4 09.07.2015 16:09
Заполнение ячейки из списков Saracin Microsoft Office Excel 6 04.02.2014 11:57
заполнение textbox по данным из combobox Владимир2222 Microsoft Office Excel 8 02.04.2013 08:20
Заполнение списка по исходным данным при наличии пустых ячеек нгв1607 Microsoft Office Excel 2 04.08.2011 10:27
Значение предыдущей ячейки Lvenok1987 Microsoft Office Excel 8 29.12.2010 01:08