Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
512 / 21 / 2
Регистрация: 11.03.2012
Сообщений: 447
1

Фильтр данных при открытии книги эксель

04.07.2016, 04:03. Просмотров 1083. Ответов 9
Метки нет (Все метки)


Подскажите, где я ошиблась. Я беру диапазон ("А14:А34"), а он у меня выбирает из всего столбца "А"
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Workbook_Open()
    Dim M(), R
    Dim D: Set D = CreateObject("Scripting.Dictionary")
    M = Титульный.Range("A14:A34").Resize(Cells(Rows.Count, 1).End(xlUp).Row)
    For R = 1 To UBound(M)
    If D.Exists(M(R, 1)) Then
        M(R, 1) = ""
    Else
        D(M(R, 1)) = R
    End If
    Next
    Титульный.Range("A14:A34").Resize(Cells(Rows.Count, 1).End(xlUp).Row) = M
End Sub
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.07.2016, 04:03
Ответы с готовыми решениями:

Загрузка данных при открытии книги
Опишите плиз функци которая совершает процеруды в ней при открытии книги. Что нить типа Private...

Почему при открытии файла эксель, появляется из фонового скрытого режима мой файл эксель
Добрый день уважаемые форумчане, столкнулся с такой проблеммой. Есть небольшая программка которая...

Как при закрытии книги эксель - убрать иконку
Добрый вечер. Помогите решить вопрос. При открытии файл эксель подгружает иконку (.ico) по...

При открытии любых файлов (ворд, эксель, фоток и т.д.) комп подвисает секунд на 30
Добрый день знающие компьютер люди! Проблема у меня в следующем: при открытии любых файлов (ворд,...

9
512 / 21 / 2
Регистрация: 11.03.2012
Сообщений: 447
04.07.2016, 06:28  [ТС] 2
Если я прописываю так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Workbook_Open()
   Dim M(), R
   Dim D: Set D = CreateObject("Scripting.Dictionary")
   M = Титульный.Range("A14:A34").Resize(lLastRow = Cells(1, 21).End(xlUp).Row)
   For R = 1 To UBound(M)
   If D.Exists(M(R, 1)) Then
       M(R, 1) = ""
   Else
       D(M(R, 1)) = R
   End If
   Next
   Титульный.Range("A14:A34").Resize(lLastRow = Cells(1, 21).End(xlUp).Row) = M
End Sub
то он ругается:
Фильтр данных при открытии книги эксель

Подскажите как мне правльно прописать. Я запуталась
0
4111 / 2218 / 938
Регистрация: 01.12.2010
Сообщений: 4,625
04.07.2016, 08:13 3
Если нужен именно диапазон "А14:А34", то :

Visual Basic
1
2
3
M = Титульный.Range("A14:A34").Value
...
Титульный.Range("A14:A34").Value = M
P.S. Если хотите удалить повторы, то может Вам подойдёт такой вариант :

Visual Basic
1
2
3
Private Sub Workbook_Open()
    Титульный.Range("A14:A34").RemoveDuplicates 1, xlNo
End Sub
1
512 / 21 / 2
Регистрация: 11.03.2012
Сообщений: 447
04.07.2016, 08:54  [ТС] 4
Спасибо большое!!!!
Первый вариант подошел

Добавлено через 15 минут
pashulka, Вы можете подсказать, какой код применить при открытии шаблона эксель, чтобы удалялись пустыe строки в диапазоне c 14 строки по 34 строку
0
4111 / 2218 / 938
Регистрация: 01.12.2010
Сообщений: 4,625
04.07.2016, 09:52 5
Если нужно проверять на пустоту целую строку, а не одну ячейку, то :

Visual Basic
1
2
3
4
5
Private Sub Workbook_Open()
    For iRow& = 34 To 14 Step -1
        If Rows(iRow&).Text = "" Then Rows(iRow&).Delete
    Next
End Sub
или

Visual Basic
1
2
3
4
5
Private Sub Workbook_Open()
    For iRow& = 34 To 14 Step -1
        If Application.CountA(Rows(iRow&)) = 0 Then Rows(iRow&).Delete
    Next
End Sub
Добавлено через 13 минут
P.S. Если в книге больше одного листа, то разумеется, необходимо указать лист, где требуется удалить пустые строки. Проще говоря, должно быть не просто Rows(iRow) , а, например, Титульный.Rows(iRow)
1
512 / 21 / 2
Регистрация: 11.03.2012
Сообщений: 447
04.07.2016, 10:02  [ТС] 6
Visual Basic
1
2
3
4
5
Private Sub Workbook_Open()
* * For iRow& = 34 To 14 Step -1
* * * * If Rows(iRow&).Text = "" Then Rows(iRow&).Delete
* * Next
End Sub
А как можно сделать это не при открытии книги, а одноразово, не используя кнопки (т.е. 1 раз удалил и все)
0
4111 / 2218 / 938
Регистрация: 01.12.2010
Сообщений: 4,625
04.07.2016, 10:11 7
Например, сохранить в любом стандартном модуле, убрать Private, затем, закладка Разработчик, кнопка Макросы, выбор нужного макроса, и кнопка Выполнить. Правда здесь также используются кнопки, но Вы, видимо, говорили о кнопках на рабочем листе …
1
512 / 21 / 2
Регистрация: 11.03.2012
Сообщений: 447
04.07.2016, 10:14  [ТС] 8
да, о кнопках на рабочем листе. Возможно это как-то сделать при введении, например в ячейку G1 цифру 1, и тогда активировался бы макрос
0
4111 / 2218 / 938
Регистрация: 01.12.2010
Сообщений: 4,625
04.07.2016, 10:25 9
Скопируйте один из двух вариантов строго в модуль нужного листа, например, Титульный

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Not Intersect(Target, [G1]) Is Nothing Then
       If [G1].Text = "1" Then
          Application.EnableEvents = False
          For iRow& = 34 To 14 Step -1
              If Rows(iRow&).Text = "" Then Rows(iRow&).Delete
          Next
          Application.EnableEvents = True
       End If
    End If
End Sub
Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Intersect(Target, [G1]) Is Nothing Then Exit Sub
    If [G1].Text <> "1" Then Exit Sub
 
    Application.EnableEvents = False
    For iRow& = 34 To 14 Step -1
        If Application.CountA(Rows(iRow&)) = 0 Then Rows(iRow&).Delete
    Next
    Application.EnableEvents = True
End Sub
1
512 / 21 / 2
Регистрация: 11.03.2012
Сообщений: 447
04.07.2016, 10:32  [ТС] 10
pashulka, Спасибо ОГРОМНОЕ!!!
Вы мне очень помогли
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.07.2016, 10:32

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

При открытии файла .csv в эксель 2013 в некоторых клетках дата вместе числа
работаю с базами таможни, импортирую csv файлы на несколько десятков тысяч строк и около сотни...

Фильтр при открытии Формы!
Private Sub BrandRUS_DblClick(Cancel As Integer) DoCmd.OpenForm &quot;ORG&quot;, acNormal...

Процессы при открытии книги
Здравствуйте. Подскажите как можно узнать какие процессоры выполняются в данные момент (см. на...

Ошибка при повторном открытии книги
У мея есть код, написан на VBA в Excel 2010. Все работает отлично, при запуске надо выбрать книгу...

Показать форму при открытии книги
Всех с Наступающим Новым Годом! Как реализовать такую процедуру, при которой при открытиии книги...

Управление макросами при открытии книги Excel
Доброго всем времени суток. Вопрос звучит так: как сделать так, чтобы при открытии книги, в случае...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.