Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Пишется нечто "левое" / 8 сообщений из 8, страница 1 из 1
15.12.2005, 16:39:36
    #33438692
Black Savage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишется нечто "левое"
Есть некий файлик Excel внем куча всякий листов. На одном из листов весит кнопка, на ней макрос:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Public Sub UpdateJP()
    ActiveSheet.Unprotect
    Range("H131").Select
    With ActiveSheet.QueryTables.Add(Connection:=GetConnectPrm(), Destination:=Range("H131"))
        .CommandText = Array("execute AnalyticDataFor " + Str(Worksheets("Константы").Range("B6").Value) + ", " + Str(Worksheets("Константы").Range("B7").Value) + ", 'JP', NULL, 0")
        .Name = "Юридические лица"
        .FieldNames = False
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = False
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlReplaceDeleteCells
        .SavePassword = True
        .SaveData = True
        .AdjustColumnWidth = False
        .RefreshPeriod =  0 
        .PreserveColumnInfo = True
        .Refresh BackgroundQuery:=False
    End With
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Если я не ошибаюсь, то работа именно этого куска кода приводит к тому, что
в выпадающем списке (см. прилагаемый рисунок) появляются записи. Со временем их становится все больше и больше. Как бы избежать увеличения записей?
...
Рейтинг: 0 / 0
22.12.2005, 17:11:23
    #33452712
Alexey Syrok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишется нечто "левое"
Убрать
Код: plaintext
.Add
...
Рейтинг: 0 / 0
30.12.2005, 12:21:10
    #33465729
Black Savage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишется нечто "левое"
To Alexey Syrok
И как же должен выглядеть работающий код?
Хм... Или это была шутка?
...
Рейтинг: 0 / 0
30.12.2005, 13:52:20
    #33465962
!!!!!!????
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишется нечто "левое"
В VBA не профи, но по логике у Вас при каждом вызове UpdateJP список подгружается к уже существующему. Поставьте перед заполнением выпадающего списка что-то типа Clear.
...
Рейтинг: 0 / 0
30.12.2005, 15:37:15
    #33466152
Black Savage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишется нечто "левое"
To !!!!!!????
Поставил
Код: plaintext
Range("H131").Clear
после строчки ActiveSheet.Unprotect - не помогло.
В VBA я тоже не спец. Проблема пустяковая, но хотелось бы как-то от
нее избавиться...
...
Рейтинг: 0 / 0
30.12.2005, 17:51:56
    #33466296
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишется нечто "левое"
попробуйте так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Public Sub UpdateJP()
Dim qtQtrResults As QueryTable
On Error Resume Next
Set qtQtrResults = ActiveSheet.QueryTables.Item("Юридические лица")
On orrer GoTo  0 

If Not qtQtrResults Is Nothing Then Exit Sub

    ActiveSheet.Unprotect
    Range("H131").Select
    With ActiveSheet.QueryTables.Add(Connection:=GetConnectPrm(), Destination:=Range("H131"))
        .CommandText = Array("execute AnalyticDataFor " + Str(Worksheets("Константы").Range("B6").Value) + ", " + Str(Worksheets("Константы").Range("B7").Value) + ", 'JP', NULL, 0")
        .Name = "Юридические лица"
        .FieldNames = False
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = False
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlReplaceDeleteCells
        .SavePassword = True
        .SaveData = True
        .AdjustColumnWidth = False
        .RefreshPeriod =  0 
        .PreserveColumnInfo = True
        .Refresh BackgroundQuery:=False
    End With
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

вероятно можно подругому, но ...Новый год все-таки :-)
...
Рейтинг: 0 / 0
30.12.2005, 17:57:04
    #33466300
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишется нечто "левое"
Этот код создает именованый диапозон
Если вы посмотрете вставка-имя-присвоить вы все их там увидите
если вы в книге не используете другие именованные диапозоны, то можно перед
Код: plaintext
1.
With ActiveSheet.QueryTables.Add(Connection:=GetConnectPrm(), Destination:=Range("H131"))
        .CommandText = Array("execute AnalyticDataFor " + Str(Worksheets("Константы").Range("B6").Value) + ", " + Str(Worksheets("Константы").Range("B7").Value) + ", 'JP', NULL, 0")
вставить удаление всех диапозонов
Код: plaintext
1.
2.
For Each x In ActiveWorkbook.Names
        x.Delete 
    Next x
если надо удалить только определённые диапозоны то нужно знать условие
например
удаляет все диапозоны начинающиеся с "Юридические_лица"
Код: plaintext
1.
2.
For Each x In ActiveWorkbook.Names
        If x.Name Like "Юридические_лица*" Then x.Delete
    Next x
...
Рейтинг: 0 / 0
10.01.2006, 10:42:43
    #33473549
Black Savage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пишется нечто "левое"
To vkodor
То шо доктур прописал.

Всем премногие сенкс...
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Пишется нечто "левое" / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]