powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Пишется нечто "левое"
8 сообщений из 8, страница 1 из 1
Пишется нечто "левое"
    #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
Пишется нечто "левое"
    #33452712
Alexey Syrok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Убрать
Код: plaintext
.Add
...
Рейтинг: 0 / 0
Пишется нечто "левое"
    #33465729
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Alexey Syrok
И как же должен выглядеть работающий код?
Хм... Или это была шутка?
...
Рейтинг: 0 / 0
Пишется нечто "левое"
    #33465962
!!!!!!????
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В VBA не профи, но по логике у Вас при каждом вызове UpdateJP список подгружается к уже существующему. Поставьте перед заполнением выпадающего списка что-то типа Clear.
...
Рейтинг: 0 / 0
Пишется нечто "левое"
    #33466152
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To !!!!!!????
Поставил
Код: plaintext
Range("H131").Clear
после строчки ActiveSheet.Unprotect - не помогло.
В VBA я тоже не спец. Проблема пустяковая, но хотелось бы как-то от
нее избавиться...
...
Рейтинг: 0 / 0
Пишется нечто "левое"
    #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
Пишется нечто "левое"
    #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
Пишется нечто "левое"
    #33473549
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To vkodor
То шо доктур прописал.

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


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