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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2011, 12:07   #11
uni
Пользователь
 
Регистрация: 05.06.2011
Сообщений: 19
По умолчанию

Методом тыка нашел ошибку.

Код:
Private Sub CommandButton2_Click()

'Dim rng As Range
     Dim grp As Range
     Dim i, j, k
     Dim adr As String
     
     
     rng = Range("A2").CurrentRegion.Rows.Count
     
    'rng.Range.Select
    Range("A2").Rows(rng).Select
    Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(2, 3, 4, 5, _
        6), Replace:=True, PageBreaks:=False, SummaryBelowData:=False


End Sub
Код:
rng = Range("A2").CurrentRegion.Rows.Count
- эта фигня почему то не работает после того когда я очищаю ячейки (меняю формат). Подскажите каким способом можно еще найти последнюю не пустую ячейку в столбце?

Последний раз редактировалось uni; 06.06.2011 в 12:27.
uni вне форума Ответить с цитированием
Старый 06.06.2011, 13:16   #12
uni
Пользователь
 
Регистрация: 05.06.2011
Сообщений: 19
По умолчанию

Нашел другой вариант

код
Код:
 rng = Range("a65536").End(xlUp).Ro
Вроде работает.

Теперь выполняю вот такой скрипт
Код:
Private Sub Grouping()
    Dim rgColumn As Range
    Set rgColumn = Range("A4")
 
     rng = Range("a65536").End(xlUp).Row
     
    'rng.Range.Select
    Range("A4").Rows(rng).Select
    Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(2, 3, 4, 5, _
        6), Replace:=True, PageBreaks:=False, SummaryBelowData:=False
End Sub
Но вываливается ошибка:"Метод Select из класса Range завершен неверно"

Мне нужно что бы у меня с ячейки A4 стартовал Select.
uni вне форума Ответить с цитированием
Старый 06.06.2011, 13:58   #13
uni
Пользователь
 
Регистрация: 05.06.2011
Сообщений: 19
По умолчанию

Код:
Private Sub Grouping()
    Dim rgColumn As Range
    Set rgColumn = Range("A4")
    
    Sheets("Лист2").Activate
     rng = Range("a65536").End(xlUp).Row
     
    'rng.Range.Select
    Sheets("Лист2").Range("A4").Rows(rng).Select
    Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(2, 3, 4, 5, _
        6), Replace:=True, PageBreaks:=False, SummaryBelowData:=False
End Sub
Переписал, однако метод Select работает для всех строк, а мне надо с A4.
uni вне форума Ответить с цитированием
Старый 06.06.2011, 14:19   #14
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Таблица начинается с А4 и 1-я строка таблицы (4-я строка на листе) - заголовок. Так? Если так, то пробуем:
Код:
Private Sub CommandButton2_Click()
Dim rng As Range
Set rng = Range("A4:F" & Cells(Rows.Count, 1).End(xlUp).Row)
rng.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(3, 4, 5, 6), _
             SummaryBelowData:=False
End Sub
nilem вне форума Ответить с цитированием
Старый 06.06.2011, 21:40   #15
uni
Пользователь
 
Регистрация: 05.06.2011
Сообщений: 19
По умолчанию

nilem
Да таблица начинается с A4:F4 и заканчивается каждый раз на разной строке.

Пробовал Ваш вариант, что то как то он у меня не вышел, выделяет не то что хотелось бы, а доработать пока не получилось.

Но я попробовал изменить свой код вот так.
Код:
Private Sub Grouping()
    Dim rgColumn As Range
'    Dim Type As XlCellType
'    Dim Value As Object
    Dim rng As Range
    Dim range1 As Range
    'Set range1 =
    
    Sheets("Ëèñò2").Activate
    'Set rng = Range("A1").SpecialCells(xlCellTypeLastCell)    'Range("a65536").End(xlUp).Row
     
    'rng.Range.Select
   Set rgColumn = ActiveSheet.Range("A4:F4").Rows(Range("A1").SpecialCells(xlCellTypeLastCell))
    rgColumn.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(3, 4, 5, 6), _
         Replace:=True, PageBreaks:=False, SummaryBelowData:=False
End Sub
Однако он ругается:"Команда не может быть выполнена над указанным диапазоном. Выберите одну ячейку из диапазона и повторите попытку".

Когда я пишу вместо Range("A4:F4")->Range("A4") почему то берется диапазон с A1, а мне нужно с A4, так и не понял, где я не прав. Пробовал писать вот так Range(Cells(1,4)), что то там про object была ошибка.

В общем, хелп мне тоже не помог(
uni вне форума Ответить с цитированием
Старый 06.06.2011, 22:16   #16
uni
Пользователь
 
Регистрация: 05.06.2011
Сообщений: 19
По умолчанию

В конце концов, записал вот так.

Код:
Private Sub Grouping()
    Dim rgColumn As Range
'    Dim Type As XlCellType
'    Dim Value As Object
    'Dim rng As Range
    Dim range1 As Range
    
    
    'Set range1 =
    
    Sheets("Ëèñò2").Activate
    
    
    'rng.Range.Select
Set rgColumn = Sheets("Ëèñò2").Range("A4:F65536")
    rgColumn.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(3, 4, 5, 6), _
         Replace:=True, PageBreaks:=False, SummaryBelowData:=False
End Sub
Оказывается подсчет Итогов нормально реагирует на незаполненные строки.)
uni вне форума Ответить с цитированием
Старый 07.06.2011, 05:17   #17
uni
Пользователь
 
Регистрация: 05.06.2011
Сообщений: 19
По умолчанию

Все таки для корректности нужно использовать в построении Итогов только те строки, которые содержат данные.
uni вне форума Ответить с цитированием
Старый 08.06.2011, 12:06   #18
uni
Пользователь
 
Регистрация: 05.06.2011
Сообщений: 19
По умолчанию

Хз почему раньше у меня не получалось так сделать, но после того как я написал.
Код:
Private Sub Grouping()
    Dim rgColumn As Range
 
    Sheets("Лист2").Activate
    
    rng = ThisWorkbook.ActiveSheet.Columns(1).End(xlDown).Row
    
Set rgColumn = ActiveSheet.Range("A4:F" & rng)
    rgColumn.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(3, 4, 5, 6), _
         Replace:=True, PageBreaks:=False, SummaryBelowData:=False
End Sub
Все заработало)))
uni вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление экспоненты средствами VBA fs444 Microsoft Office Excel 10 30.12.2009 10:42
Заполнение таблицы средствами VBA parsn Microsoft Office Excel 2 28.12.2009 14:05
Неразрывный пробел средствами VBA tolikman Microsoft Office Word 5 23.03.2009 05:11
Сжатие рисунков средствами VBA EducatedFool Microsoft Office Excel 1 17.01.2009 19:12
Условное форматирование средствами VBA Acro Microsoft Office Excel 5 01.12.2008 16:40