Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Выделение заполненного массива Добавлено: 29.04.10 22:25  

Автор вопроса:  Григорий
Доброе время суток.
Как сделать макрос для выделения ячеек, в которых
есть числовые данные.
Данные находятся в колонке "C".

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 Григорий



Вопросов: 21
Ответов: 35
 Профиль | | #1 Добавлено: 29.04.10 23:33
Нашел вот такой код - можно ли его переделать под мою задачу?
  1. Sub SelectCells()
  2.  
  3. Dim iCell As Range
  4. Dim iUnionRange As Range
  5.  
  6. iDateOne = #1/1/2004# '"01/01/04" '
  7. iDateTwo = #1/2/2004# '"02/01/04"
  8.  
  9. For Each iCell In Range("A1:A15")
  10.  
  11. If iCell >= iDateOne And iCell <= iDateTwo Then
  12.  
  13. If iUnionRange Is Nothing Then
  14.   Set iUnionRange = Union(iCell, iCell)
  15. Else
  16.   Set iUnionRange = Union(iUnionRange, iCell)
  17. End If
  18.  
  19. End If
  20.  
  21. Next
  22.  
  23. If Not iUnionRange Is Nothing Then iUnionRange.EntireRow.Select
  24.  
  25. End Sub

Ответить

Номер ответа: 2
Автор ответа:
 Григорий



Вопросов: 21
Ответов: 35
 Профиль | | #2 Добавлено: 29.04.10 23:47
Вот еще один пример.
  1. Sub CopyAreas()
  2.     'Based on page 73
  3. Range("A:D").SpecialCells(xlCellTypeConstants, 1).Copy Range("I1")
  4. End Sub

Ответить

Номер ответа: 3
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #3 Добавлено: 30.04.10 09:36
Элементарно. :-)
  1. Sub SelectCells()
  2.   Dim iCell As Range
  3.   Dim iUnionRange As Range
  4.  
  5.   For Each iCell In Range("C1:C15")
  6.     If IsNumeric(iCell) And iCell.Value <> 0 Then
  7.       If iUnionRange Is Nothing Then
  8.         Set iUnionRange = Union(iCell, iCell)
  9.       Else
  10.         Set iUnionRange = Union(iUnionRange, iCell)
  11.       End If
  12.     End If
  13.   Next iCell
  14.   
  15.   If Not iUnionRange Is Nothing Then iUnionRange.EntireRow.Select
  16. End Sub

Ответить

Номер ответа: 4
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #4 Добавлено: 30.04.10 09:39
  1. Sub CopyAreas()
  2.   Range("C:C").SpecialCells(xlCellTypeConstants, 1).Copy Range("I1")
  3. End Sub

Ответить

Номер ответа: 5
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #5 Добавлено: 30.04.10 09:51
В 3 ответе если нужно только ячейки, а не строки с ячейками, то строку
  1. If Not iUnionRange Is Nothing Then iUnionRange.EntireRow.Select
заменяем на
  1. If Not iUnionRange Is Nothing Then iUnionRange.Select

Ответить

Номер ответа: 6
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #6
Добавлено: 30.04.10 23:33
Jasmin молодец!
в ее коде я бы поправил для конкретики еще одну строчку, а именно, заменил бы эту:
  1. Set iUnionRange = Union(iCell, iCell)

на эту:
  1. Set iUnionRange = iCell

Работать будет, разумеется в обоих случаях, просто в данной ветке условий я бы хотел подчеркнуть, что самого объединения как такового происходить здесь не должно - мы вставляем первую область (Area) в этот диапазон (Range). С типом данных все также в порядке.

Ответить

Номер ответа: 7
Автор ответа:
 Григорий



Вопросов: 21
Ответов: 35
 Профиль | | #7 Добавлено: 02.05.10 01:33
Большое спасибо, Jasmin!!!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам