Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Вставить макросом диапазон без видимых пустых ячеек - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Вставить макросом диапазон без видимых пустых ячеек
Фомулист Дата: Пятница, 22.01.2021, 18:08 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 398
Репутация: 9 ±
Замечаний: 80% ±

Excel 2003
Здравствуйте снова, народ.
В приложенном файле мне нужно вставить ячейки столбца U, в которых видны цифры (остальные содержат пустую строку - спецвставка результата формулы) в столбец N, начиная с 448 строки. Сам я написал код:
[vba]
Код
Sub Копипаст()
Dim Cell As Range, r As Range
Set r = Range("U4" & ":" & "U104")
With ActiveWorkbook
For Each Cell In r
  If Not Intersect(Cell, r) Is Nothing And Cell.Value <> "" Then
     Cell.Copy
     For i = 448 To 548
      With Range("N" & i)
       ActiveSheet.Paste
       i = i + 1
      End With
     Next i
  End If
Next Cell
End With
End Sub
[/vba]
Но он:
1) перебирает все значения, скопированные из столбца U, в одной ячейке и оставляет в ней последнее значение.
2) Несмотря на то, что в макросе указано With Range("N" & i), скопированные значения вставляются в выделенную на момент запуска кода ячейку.
Помогите исправить код, пожалуйста.
К сообщению приложен файл: 6690433.xls (31.5 Kb)


Терпение и труд всё перетрут!
 
Ответить
СообщениеЗдравствуйте снова, народ.
В приложенном файле мне нужно вставить ячейки столбца U, в которых видны цифры (остальные содержат пустую строку - спецвставка результата формулы) в столбец N, начиная с 448 строки. Сам я написал код:
[vba]
Код
Sub Копипаст()
Dim Cell As Range, r As Range
Set r = Range("U4" & ":" & "U104")
With ActiveWorkbook
For Each Cell In r
  If Not Intersect(Cell, r) Is Nothing And Cell.Value <> "" Then
     Cell.Copy
     For i = 448 To 548
      With Range("N" & i)
       ActiveSheet.Paste
       i = i + 1
      End With
     Next i
  End If
Next Cell
End With
End Sub
[/vba]
Но он:
1) перебирает все значения, скопированные из столбца U, в одной ячейке и оставляет в ней последнее значение.
2) Несмотря на то, что в макросе указано With Range("N" & i), скопированные значения вставляются в выделенную на момент запуска кода ячейку.
Помогите исправить код, пожалуйста.

Автор - Фомулист
Дата добавления - 22.01.2021 в 18:08
_Igor_61 Дата: Пятница, 22.01.2021, 22:27 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 504
Репутация: 90 ±
Замечаний: 0% ±

Excel 2007
Фомулист, а в прошлой теме это же? Замените [vba]
Код
Range("H3:H" & Cells(Rows.Count, 8).End(xlUp).Row)
[/vba] на [vba]
Код
Range("U4:U" & Cells(Rows.Count, 21).End(xlUp).Row)
[/vba] и "G3" на "N448". Или не то нужно? В прошлой теме не отписались, получилось или нет
К сообщению приложен файл: 7031771.xls (37.0 Kb)
 
Ответить
СообщениеФомулист, а в прошлой теме это же? Замените [vba]
Код
Range("H3:H" & Cells(Rows.Count, 8).End(xlUp).Row)
[/vba] на [vba]
Код
Range("U4:U" & Cells(Rows.Count, 21).End(xlUp).Row)
[/vba] и "G3" на "N448". Или не то нужно? В прошлой теме не отписались, получилось или нет

Автор - _Igor_61
Дата добавления - 22.01.2021 в 22:27
Kuzmich Дата: Пятница, 22.01.2021, 22:36 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 157 ±
Замечаний: 0% ±

Excel 2003
[vba]
Код
Sub Копипаст_1()
Dim iLR As Long
Dim Cell As Range
     iLR = 448
     Columns("N").ClearContents
   For Each Cell In Range("U4:U104")
     If Cell <> "" Then
       Cell.Copy
       Range("N" & iLR).PasteSpecial xlPasteValues
       iLR = iLR + 1
     End If
   Next
End Sub
[/vba]
 
Ответить
Сообщение[vba]
Код
Sub Копипаст_1()
Dim iLR As Long
Dim Cell As Range
     iLR = 448
     Columns("N").ClearContents
   For Each Cell In Range("U4:U104")
     If Cell <> "" Then
       Cell.Copy
       Range("N" & iLR).PasteSpecial xlPasteValues
       iLR = iLR + 1
     End If
   Next
End Sub
[/vba]

Автор - Kuzmich
Дата добавления - 22.01.2021 в 22:36
Фомулист Дата: Суббота, 23.01.2021, 00:43 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 398
Репутация: 9 ±
Замечаний: 80% ±

Excel 2003
В прошлой теме не отписались, получилось или нет

Большое спасибо.
Завтра проверю.
Kuzmich,
Большущее спасибо.
И всё же хотелось бы понимать где ошибка в моём коде?


Терпение и труд всё перетрут!
 
Ответить
Сообщение
В прошлой теме не отписались, получилось или нет

Большое спасибо.
Завтра проверю.
Kuzmich,
Большущее спасибо.
И всё же хотелось бы понимать где ошибка в моём коде?

Автор - Фомулист
Дата добавления - 23.01.2021 в 00:43
RAN Дата: Суббота, 23.01.2021, 11:22 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
Sub qq()
    Columns("U").FormulaLocal = Columns("U").FormulaLocal
    Columns("U").SpecialCells(2).Copy Range("N448")
End Sub
[/vba]
Paste - метод листа, а не диапазона.


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
Sub qq()
    Columns("U").FormulaLocal = Columns("U").FormulaLocal
    Columns("U").SpecialCells(2).Copy Range("N448")
End Sub
[/vba]
Paste - метод листа, а не диапазона.

Автор - RAN
Дата добавления - 23.01.2021 в 11:22
Фомулист Дата: Суббота, 23.01.2021, 16:10 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 398
Репутация: 9 ±
Замечаний: 80% ±

Excel 2003
Paste - метод листа, а не диапазона.

То есть обе проблемы моего кода вызваны неправильным использованием метода Paste?


Терпение и труд всё перетрут!
 
Ответить
Сообщение
Paste - метод листа, а не диапазона.

То есть обе проблемы моего кода вызваны неправильным использованием метода Paste?

Автор - Фомулист
Дата добавления - 23.01.2021 в 16:10
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!