Страницы: 1
RSS
Количество выделенных ячеек
 
Выделены несколько ячеек, нужно определить их количество. в VBA.  
в совсем было бы круто узнать размеры выделенного диапазона (длина и ширина)
 
{quote}{login=The_Prist}{date=16.09.2009 09:49}{thema=}{post}Dim lCellsCount as Long  
lCellsCount = Selection.Count  
 
А вот длина и ширина - это действительно круто! В каких единицах хотите измерить и для чего?{/post}{/quote}  
Спасибо за Count, все время забываю назначение команд.  
 
А измерять в "Ячейках" больше вроде не в чем.    
На пример (A1:D5)-могут быть и другие значения  
ответ 4 на 5
 
Ситуация такая  
Я использую автофильтр  
   Selection.AutoFilter Field:=32, Criteria1:="не сопоставлен", Operator:=xlAnd  
отображаются только не сопоставленные значения    
     
копирую данные в другой лист без активации листа  
    Range("AD5:AD198").Copy  
    Sheets("Лист1").Range("А1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False  
т.е. на Листе1 несколько не сопоставленных Значений  
как узнать их количество
 
Sub Test()  
Dim lCellsCount As Long  
Dim Rng As Range  
MsgBox "Ячеек: " & lCellsCount & Selection.Count & Chr(10) _  
& "Строк: " & Selection.Rows.Count & Chr(10) & "Столбцов: " & Selection.Columns.Count  
End Sub
 
Лишнего написал. Вот так нужно:  
Sub Test()  
MsgBox "Ячеек: " & Selection.Count & Chr(10) _  
& "Строк: " & Selection.Rows.Count & Chr(10) & "Столбцов: " & Selection.Columns.Count  
End Sub
 
Спасибо Юрий М . Вон оно как просто!
 
но я копирую данные в другой лист без активации листа и посчитать значения желательно без активации листа, а то экран моргает.
 
Выложите свой код, мы поправим его
 
Selection.AutoFilter Field:=32, Criteria1:="не сопоставлен", Operator:=xlAnd  
' Копирует Наименование  
    Sheets("Приходование").Range("G5:G198").Copy  
    Sheets("Лист1").Select ' Мигнул  
    Range("A1").Select  
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False  
    Dim КолЯч As Integer  
    КолЯч = Selection.Count  
    Sheets("Приходование").Select ' Опять мигнул  
 
' Код поставщика  
    Sheets("Приходование").Range("H2").Copy  
    Sheets("Лист1").Range("D1:D" & КолЯч).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
 
Попробуйте так:  
Sub Test()  
With Sheets("Лист1")  
Range("AD5:AD198").Copy  
.Cells(1, 1).PasteSpecial Paste:=xlPasteValues  
End With  
End Sub
 
А если хотите с активацией листа, то используйте    
Application.ScreenUpdating = False  
а в самом конце кода:  
Application.ScreenUpdating = True
 
{quote}{login=Юрий М}{date=16.09.2009 11:25}{thema=}{post}Попробуйте так:  
Sub Test()  
With Sheets("Лист1")  
Range("AD5:AD198").Copy  
.Cells(1, 1).PasteSpecial Paste:=xlPasteValues  
End With  
End Sub{/post}{/quote}  
 
нето.    
там где копирует Наименование еще и подсчитывает количество вставленных ячеек (оно всякий раз разное)  
                 КолЯч = Selection.Count  
и на основании КолЯч "код поставщика" распространяется на Range("D1:D" & КолЯч).PasteSpecial Paste:=xlPasteValues
 
Посмотрите чуть выше, вам Юрий написал про Application.ScreenUpdating = False
 
{quote}{login=}{date=16.09.2009 11:56}{thema=}{post}Посмотрите чуть выше, вам Юрий написал про Application.ScreenUpdating = False{/post}{/quote}  
в принципе это помогает. Спасибо
Страницы: 1
Читают тему
Наверх