Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 След.
Ошибка при подключении к PostgreSQL с курсором adOpenKeyset
 
Всем добрый вечер!
Возникла вдруг такая проблема: при подключении к PostgreSQL через recordset при указании типа курсора rs.CursorType = adOpenKeyset возникает ошибка "cursor updatability changed". Макросы все выполняются, но это сообщение возникает постоянно при таком курсоре. Если его изменить или не устанавливать, то при переборе курсором recordset возникает уже другая ошибка "Набор строк не поддерживает прокрутку данных в обратном направлении". А эта ошибка уже останавливает работу макроса. Никакие On error resume next или Application.DisplayAlerts = 0 не помогают. Возможно, надо отключать сообщения об ошибках в самом скрипте к PostgreSQL.
Никто не знает, как это лечить?
DAX: построение топов
 
Добрый день! У меня есть мера, определяющая дельты между периодами (работает благодаря помощи на форуме), и вот я пытаюсь вывести топ из этих дельт. Пробовал через RANKX (вариант нашел тут же на форуме), но как не сидел два дня и не менял фильтры, все равно не добился, чтобы в таблице показывалась дельта по Клиенту6, хотя дельта по нему нормально отображается.
Код
= CALCULATE ( [Дельты]; 
   FILTER(VALUES('Таблица1'[Клиент]);
   RANKX( ALL('Таблица1'[Клиент]); [Дельты];;ASC)<=2)
)

Дальше смастерил своего монстра из TOPN, и хотя в DAX Studio сам топ показывается корректно, в таблицу выводятся вообще все значения (за исключением того же несчастного Клиента6).
Код
= VAR TB = SUMMARIZE('Таблица1'; 'Таблица1'[Клиент]; 'Календарь'[WEEK_END]; "dlt"; [Дельты])
VAR TOP2 = TOPN(2; TB; [dlt]; ASC)
VAR RES = CALCULATE([Дельты]; TOP2)

RETURN RES
Просьба помочь разобраться, что я не учел. Модель данных теперь с календарем, крутил все и так и этак. В примере варианты самые близкие к реальности.
DAX: не считается дельта, если клиент отсутствует в одном из периодов
 
Все добрый день!
Я считаю дельту по сумме по клиентам за два периода. Если клиент есть в обоих периодах, то все в порядке, но если только в одном, то вместо дельты отображается пустота. В примере за 23.10.22 по Клиенту6 должно стоять -300, а в 16.10.22 по Клиенту7 должен быть 0.
Сейчас мера выглядит так:
Код
VAR CUR_DT = MAX('Таблица1'[Дата])
VAR FLT = FILTER(ALL('Таблица1'[Тип];'Таблица1'[ФЛ_ЮЛ]; 'Таблица1'[Исключение]);
         'Таблица1'[Тип] = "Основной"            
         && 'Таблица1'[ФЛ_ЮЛ] = "ЮЛ"
         && 'Таблица1'[Исключение] = 0
      )
VAR PREV = CALCULATE( SUM('Таблица1'[Сумма]); 
          FLT; 'Таблица1'[Дата] = CUR_DT - 7 
           )
VAR CURR = CALCULATE( SUM('Таблица1'[Сумма]); 
          FLT; 'Таблица1'[Дата] = CUR_DT 
           )
VAR RES = CURR - PREV

RETURN RES
Пробовал через ISBLANK в итогах и вместо суммы использовать SUMX + ISBLANK, но появляются лишь нули по клиентам, не удовлетворяющим условиям выборки, а напротив Клиента6 и Клиента7 все равно остается пустота.

UPD: получается, что там вообще нет значений, даже blank. Видимо надо делать аналог full join с достраиванием недостающих данных.
Изменено: Ungrateful - 31.10.2022 12:19:46
VBA: отобразить адрес ячейки в TextBox формы
 
Добрый вечер!
Подскажите, а есть ли возможность в UserForm в режиме vbModeless отловить адрес ячейки, при клике на листе без использования событий листа? Я пытаюсь реализовать в надстройке возможность кликнуть по листу и получить, например, в TextBox адрес ячейки. В голову ничего не приходит.
DAX: сумма по клиентам, имеющим 2 категории
 
Добрый день, коллеги!
Никак не могу разобраться с группировками в DAX. У меня есть таблица с именами, категориями и суммами. Из нее мне нужно получить сумму только по тем именам, у которых встречается 2 категории. Делаю виртуальную таблицу с уникальными парами Имя-Показатель, но посчитать количество показателей для каждого имени никак не выходит. Подскажите, пожалуйста, как мне сделать группировку по имени с подсчетом количества показателей?
Ниже мои попытки, в приложении файл с примером.

Код
=VAR TBL = ALL('Таблица1'[Имя]; 'Таблица1'[Показатель])

VAR NM = DISTINCT('Таблица1'[Имя])

VAR ADDC = 
   ADDCOLUMNS(   TBL;
         "rn";
         CALCULATE(COUNTROWS(TBL);
         NM = 'Таблица1'[Имя]
         )
   )
   
   
VAR RES = CALCULATE(SUM('Таблица1'[Сумма]);
         FILTER(ADDC;
         [rn] = 2
         )
      )
      
RETURN 
   RES
DAX, фильтрация данных через KEEPFILTERS
 
Всем добрый вечер!
Пытаюсь сделать на Power Pivot (2016 Excel) следующее:
1. У меня есть мера, рассчитывающая дельты между двумя периодами.
2. Есть меры, определяющие Топ 3 по максимальной дельте и Топ 3 по минимальной дельте.
3. И вот теперь я создаю меру, которая показывала бы начальное и конечное значения для тех наименований, которые входят в Топ 3+ или Топ 3- (по сути, из чего были вычислены эти дельты). Создаю в тексте меры Топы только по наименованиям, передаю их как аргумент функции KEEPFILTERS в CALCULATE, но в первой дате (июне) показываются не только наименования из топов, но и все остальные. Похоже, что хоть я и оставляю только наименования для топов, там все равно остаются неявные фильтры на дату. Подскажите, как можно сбросить эти фильтры или, может, я вообще ушел не в ту сторону...

Код
=VAR TBL = 
      TOPN(
         3;
         ALL('Данные'[Наименование]);
         CALCULATE([Дельта];
            'Календарь2'[YM] = 202109
         );
      )            
   
VAR TBL2 = 
      TOPN(
         3;
         ALL('Данные'[Наименование]);
         CALCULATE([Дельта];
            'Календарь2'[YM] = 202109 
         );
         1
      )            
VAR RES = CALCULATE(
            SUM('Данные'[Сумма]);
            ('Календарь2'[YM] = 202106 ||
            'Календарь2'[YM] = 202109);
            KEEPFILTERS(UNION(TBL2;TBL) 
            )
         )

RETURN
   RES
DAX: не определяется сумма за предыдущий месяц
 
Добрый день!
Никак не могу вникнуть в логику DAX )
Вот я вычисляю данные за прошлый месяц через DATEADD, и все идет нормально:
Код
= CALCULATE(
   SUM('Данные'[Сумма]);
   DATEADD('Календарь'[DT]; -1;MONTH)
)

А вот пытаюсь передать в качестве месяца номер предыдущего месяца, и тут уже выдаются пустые значения. Но если сгруппировать до квартала, то значение предыдущего месяца показывает.

Код
=VAR CURR_M = MAX('Календарь'[MONTH])
   
RETURN 
CALCULATE(
   SUM('Данные'[Сумма]);
   'Календарь'[MONTH] = (CURR_M-1)
   )
В чем тут может быть дело?
Заранее спасибо!

DAX: дельта по кварталам суммируется при группировке
 
Добрый день!
Начал изучать DAX (в PP), и столкнулся с таким моментом: при расчете дельты по кварталу я пишу меру:
Код
=VAR CURR_DT = MAX('Календарь'[DT])
               
RETURN
IF(
   [AllSum] <> 0 && 
   ENDOFQUARTER('Календарь'[DT]) = CURR_DT;
   [AllSum] - 
   CALCULATE(
      [AllSum];
      ALL('Календарь'[DT]);
         DATEADD(
            'Календарь'[DT];
            -1;
            QUARTER
      )
   )
)
Она, как мне и хотелось, выводит дельты только для последнего месяца каждого квартала. Но, при сворачивании "плюсиком" (группировке) до кварталов, мера суммирует дельты по каждому месяцу и выводит сумму этих дельт.
Как я понимаю, такая группировка не считается фильтром. Можно как-то определить, сгруппированы столбцы "плюсиком" или нет?
Сбиваются даты при копировании листа в другую книгу
 
Добрый день!
Неожиданно при загрузке данных из Excel в Access через SQL-запрос Access стал некорректно распознавать даты. Ту часть 11 и 12 января он стал считать 1 октябрем и 1 декабрем. При том, что остальные даты воспринимает корректно.
Попытался сделать пример - но все выгружается нормально... Зато обнаружил, если из первичного файла скопировать в другую книгу весь лист, то даты сбиваются, как я описал выше. Похоже, что проблема на стороне Excel.
Возможно, кто-то сталкивался с такой проблемой?
PQ - изменение столбца по условию, без добавления нового
 
Добрый день!
Подскажите, пожалуйста, как можно в PQ изменить значения одного столбца, при условии, что во втором содержится определенный текст?
Через добавление нового столбца - понятно:
Код
= Table.AddColumn(AddShortN, "Пользовательская", each if Text.Contains([Раздел], "ИТОГО") then "111" else [Подраздел])
А вот без добавления никак не выходит. Пересмотрел все функции Table и List, но нашел только вариант через Transform, но тоже не сложилось. List.Transform, как я понял, работает только с заданным списком, и на другой не сослаться. А в Table.TransformColumns действия тоже только с конкретным столбцом.  
PQ расчет стоимости на основании прайсов, рецептов и шансов
 
Добрый день!
Разбираюсь с power query - решил посчитать на ее основе стоимость вещей (рецептов), принцип "сбора" которых описан в трех таблицах:

1. Прасйсы, где указаны ингридиенты и их стоимсть.
2. Рецепты, где столбцах указаны вещи, в строках - их составляющие, а на пересечении - количество составляющих. При этом, в состав вещи может входить другая вещь.
3. Шансы, где указаны шансы получения каждой вещи из рецепта.
В итоге должна получиться таблица с перечнем вещей (рецептов) и их общей стоимостью с учетом стоимости ингридиентов и шансов получения каждого рецепта (и входящего в него другого рецепта, если такой есть).

В целом, я все это сделал в pq - результат выводится на лист "Свод". Но смущает обилие кода, который мне так и не удалось оптимизировать.
Например, каждый раз после применения NestedJoin приходится раскрывать нужные столбцы. Пробовал через Join, но он не дает выбрать название выводимых столбцов, и ругается, если аналогичные названия есть в первой таблице (или я не понял как это сделать - в описании языка такого параметра у Join не нашел).
Если поможете с оптимизацией, буду очень благодарен.
Изменено: Ungrateful - 11.05.2020 16:17:41
SQL, ошибка при загрузке данных в файл Access, вместо части данных загружаются null
 
Добрый день!
Столкнулся с проблемой, когда при попытке загрузить данные из листа excel в лист access посредством sql, часть данных теряется. В приложенном зипе файл с данными называется Карточка1. В нем в столбцах Дебет счет и Кредит счет даны вроде бы однотипные данные, но при загрузке в access в первый столбец загружаются только данные со счетом 51, остальные заменяются значением null, а во второй все загружается как надо. Раньше подобные карточки загружал десятками, и все было в порядке.
Нашел в интернете информацию, что ошибка может быть связана с неправильным импортом данных. Предлагалось указать в запросе IMEX=1. Так и сделал, но после этого в базе стала появляться еще одна таблица ОшибкиИмпорта, с указанием, в каких столбцах и строках произошла ошибка. Более того, в этой новой таблице показана ошибка в столбце Дебет, хотя ее вроде как там и нет, все данные по этому столбцу загружаются нормально.
Помогите разобраться, как можно малой кровью решить эту проблему.

Да, в приложенном архиве файл с макросами - это Пример sql. Из него запускается запрос.
SQL: получить комбинацию всех пар, даже при отсутствии значений
 
Добрый день!
У меня есть таблица с тремя полями: Дата, Наименование, Сумма. В записях все данные уже уникальные, т.е. пара Дата-Наименование повторяется только один раз (в примере это лист "База"). Я пытаюсь получить для каждой имеющейся даты соответствия из всех имеющихся наименований, даже если в таблице нет такой пары (как это должно выглядеть, видно на листе "Результат"). В случае, если такой пары нет, в графе Сумма должно выводиться пустое значение (NULL). Пробовал разными способами, но так ничего и не получилось.
Заполнение БД посредством recordset, оптимизация кода
 
Добрый день!
У меня есть таблица, данные из которой необходимо переместить в базу данных. При этом, исходная таблица не нормализована, в ней есть и объединенные ячейки (как по строкам, так и по столбцам) и пропущенные строки, в общем, все печально. Я реализовал перенос из данных через recordset, но есть подозрение, что все не слишком оптимально.
Например, возникли следующие вопросы:
1. Подскажите, действительно ли нужно при открытии recordset-а выгружать таблицу перед внесением в нее новых данных? Пробовал делать запрос на одну строку, ничего не поменялось. А у меня иногда бывает очень много записей, и такая выгрузка будет тормозить процесс. Имеется в виду эта строка кода:
Код
    strSql = "SELECT * FROM [" & ws_base.Name & "$] IN '" & xlFile & "' [Excel 12.0; Xml; hdr=yes;]"
    rs.Open strSql, cn

В приложенном файле роль базы данных играет отдельный лист.
Заранее спасибо.
Запрос SQL: построение перечня уникальных значений и вывод общей суммы по каждому
 
Добрый день!
Пытаюсь сделать запросом SQL таблицу на основе базы  данных, в которой за нужный мне период будут показаны все имена и  соответствующие им суммы. При этом, имена перечисляются все, которые  есть в базе, а суммы указываются только для тех имен, по которым в этот  период были начислены суммы. Пример в приложении (лист "Загрузка  данных", а с первого листа можно загрузить таблицу в базу Db.accdb).
Написал вот такой запрос:    
Код
SQLstr = "SELECT t1.[Имя], t2.[Сумма] FROM [" & dbTableName & "] AS t1 " & _     
"LEFT JOIN (SELECT t.[Период], t.[Имя], t.[Сумма] FROM [" & dbTableName & "] t WHERE t.[Период] > #02/01/2019#) AS t2 " & _     
"ON t1.[Имя] = t2.[Имя] GROUP BY t2.[Период], t1.[Имя], t2.[Сумма]"
Но он выводит имена то количество раз, которое они  встречались в периоде. Если делаю сумму по полю, она многократно  дублируется. Помогите исправить запрос, чтобы компоновал нужную таблицу.
Спасибо.
Изменено: Ungrateful - 22.10.2019 23:55:29
Посоветуйте книги по SQL
 
Всем добрый день!
Посоветуйте, пожалуйста, толковую книгу по SQL, желательно с применением в VBA. Прочитал "SQL для простых смертных" Мартина Грабера, но там совсем мало - сгодится для начала, а при погружении в тему многое приходится гуглить.
Как в SQL-запросе игнорить дубли?
 
Подскажите, пожалуйста, есть ли возможность при вставке пула строк из Excel в таблицу Access отвергать дубликаты записей, но при этом записывать уникальные? Я при создании таблицы делаю уникальными несколько полей, но при дублировании система просто возвращает исключение и не копирует ничего. Прочитал, что в MySql есть такой параметр как Ignore Duplicate Key (Ignore_Dup_Key), но в VBA он у меня на сработал.
Как понять, отработал ли SQL-запрос на Update?
 
Добрый день!
Есть таблица с большим количеством строк и много запросов с условиями, при выполнении которых перезаписывается значения в полях, и не хочется, чтобы лишние запросы оставались в перечне.
Подскажите, плз, есть ли способ определить, отработал ли SQL запрос на Update? Обновляю через Execute.  
Изменено: Ungrateful - 04.10.2019 14:08:33
Сводная таблица подгоняет высоту строк, как убрать автоматическую высоту строк в детализации сводной таблицы?
 
Добрый вечер!
Столкнулся с такой штукой: при двойном клике на поле сводной таблицы открывается новый лист с детализацией текущего значения, и всегда все строки были стандартной высоты, хотя и содержали информацию намного больше видимой в такой ячейке. И вот после того, как я стал тянуть данные для сводной таблицы из внешнего файла Access, в детализации стала автоматом подгоняться высота всех строк. И ладно если их 10-20, а если даже тысяча, то это уже проблема. Причем явно видно, что сначала данные выгружаются в нормальном виде, а потом идет автоматическое расширение. Облазил все настройки, ничего похожего на автоматическую подгонку не нашел.
Подскажите, как можно отключить это зло? Обратный возврат макросом ширину строк к стандартной не подойдет, тут важно время выгрузки данных, а не визуальная эстетика )
Изменено: Ungrateful - 01.10.2019 21:06:06
Сводная таблица, внешнее подключение - как организовать обновление?
 
Ковыряюсь с подключением сводной таблицы к внешнему источнику, удалось настроить такое подключение с созданием PT с нуля. Работает все замечательно. Но вот с обновлением подключения в уже имеющейся таблице (чтобы заново не отстраивать ее структуру) пришлось помучиться. Сначала пытался обновить подключение у PT, которая ссылается на лист той же рабочей книги, ничего не вышло. Пытался менять PivotCaches, прописывая строку подключения и sql-запрос, но все мимо.
В итоге, получилось сделать только так:
- на листе имеется таблица с внешним подключением и готовой структурой
- создаю новое подключение
- обновляю подключение в таблице, указав новое:
Код
ActiveWorkbook.Connections.Add "AccDatabase", "", _
   "ODBC;DSN=MS Access Database;DBQ=" & _
   dbFullName & ";DefaultDir=" & dbPath & ";" &_
   "DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;", _
       "SELECT * FROM `" & dbFullName & "`." & dbTableName, 2

PT.ChangeConnection ActiveWorkbook.Connections("AccDatabase")
В итоге, возникли вопросы:
- можно ли как-то проще обновлять кэш из внешнего источника (например, добавлять соединение сразу при обновлении кэша через какой-нибудь SourceData)?
- и можно ли все-таки переделать PT с внутренним кэшем на внешний.
Заранее благодарен!

И ещё выявилась проблема, что при обновлении описанным мной способом, часто слетает подключение. А при построении новой таблицы всегда все в порядке.
Изменено: Ungrateful - 23.09.2019 18:49:45
Из Excel в Access с помощью VBA
 
Всем добрый день!
Появилась у меня необходимость загрузить данные из Excel в Access из-за большого объема данных, с которыми Excel справляется, но слишком туго.
Сейчас все выглядит так: макрос обрабатывает внешний Excel-файл, пишет в массив данные, а затем выгружает их в Excel уже в необходимом виде. Решил сделать то же самое, но выгружать данные в Access. И вот ковыряясь в литературе и на форумах, не смог найти способ выгрузки данных не просто с листа или с диапазона, а именно из массива. Вообще, возможно ли сделать такой SQL-запрос?
Сейчас делаю вот так:
Код
tName = "TestTable"
xlSheetName = ThisWorkbook.ActiveSheet.Name
xlFile = ThisWorkbook.Path & "\" & ActiveWorkbook.Name

Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & xlFile & "; Extended Properties=""Excel 12.0; Xml; HDR=Yes"""

Set dbcn = New ADODB.Connection
dbcn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & dbFile

'стираем старую таблицу, если она есть
On Error Resume Next
strSQL = "DROP TABLE [" & tName & "]"
dbcn.Execute strSQL
On Error GoTo 0

'создаем новую таблицу с нужными полями
strSQL = "CREATE TABLE [" & tName & "] ([num] integer, [date] date, [summ] long)"
dbcn.Execute strSQL

'вставляем данные в таблицу 
strSQL = "INSERT INTO [" & tName & "] SELECT * FROM [" & xlSheetName & "$]  IN '" & xlFile & "' [Excel 12.0; Xml; hdr=yes;]"
dbcn.Execute strSQL

cn.Close
dbcn.Close
    
Set cn = Nothing
Set dbcn = Nothing
но это, как я и говорил, - вставка данных с листа, а не из массива. Пытался крутить массив так и эдак - не вышло.
Подскажите, возможно ли в данном случае оперировать массивом и вообще в ту ли степь я пошел :)
Спасибо.
Сводная таблица, числовой фильтр с условиями
 
Всем добрый день!
Подскажите, пожалуйста, можно ли в сводной таблице сделать фильтр или срез с градациями по сумме: больше 100, больше 500 и т.д.?
Самое простое - добавить кнопки с макросами, но это не очень красиво.
Пробовал сначала группировать поле, потом вставлять его в срез, но там можно сделать только с определенным шагом, что снова не так красиво, как хотелось бы )
Excel 2010.
Определение адреса области, к которой применено УФ
 
Добрый день!
Подскажите, плз, как можно программно (VBA) определить адреса областей, к которым применено условное форматирование? У FormatConditions такого свойства не нашел (.address выдает ошибку). Т.е. по сути, мне нужно определить адреса всех областей на листе, к которым оно применено.
Изменено: Ungrateful - 07.06.2017 12:15:32
Excel 2003 неверно отображает результат макроса в условном форматировании
 
Добрый день!
Столкнулся с такой проблемой: написал код в Excel 2010, который создает правило условного форматирования. У меня он работает идеально. Однако у коллеги, у которого стоит версия 2003 года, формула получается совершенно иная - задаю ячейку "A2", а он выводит строку в конце листа.
Причем, методом тыка, удалось добиться, чтобы на выходе была ячейка близкая к той, что я указал, но все равно идет смещение на одну-две строки. Для этого в коде ввел выделение ячеек всего листа.
Файл прикладываю, в рем кнопка "Вариант 1" - это начальный код, "Вариант 2" - код с выделением ячеек листа.
Заранее спасибо.
Передача массива формулой
 
Подскажите, можно ли формулой передать массив значений (как в VBA)?
Имеется список, из которого формулой я достаю уникальные значения.
Примерно так:
Код
=ИНДЕКС($B$2:$B$16;НАИМЕНЬШИЙ(ЕСЛИ($E$2=A2:A16;СТРОКА(B2:B16)-1;"");СТРОКА(ДВССЫЛ("1:"&ЧСТРОК($B$2:$B$16)))))
Далее, эти значения мне нужно использовать в другой формуле. Формула замечательно работает, если ее ввести как формулу массива в несколько ячеек, но при использовании в другой формуле (тоже формуле массива), учитывается только первое значение. Пробовал дать ей имя и использовать в таком виде - тот же результат. Или придется все-таки выводить результаты в отдельный столбец и использовать в формуле диапазон?
Поиск множества значений посредством формулы, Поиск в таблице, когда заданным параметрам поиска соответствует несколько значений
 
Добрый день!
Изучаю формулы массивов, и поставил себе задачу, с которой не получается справиться )
Есть два именованных диапазона: Даты и Номера. Номера всегда разные, но существуют даты, которым соответствует несколько номеров.
Просьба помочь сделать многоячеечную формулу массива, которая бы при выборе даты выдавала бы все соответствующие ей номера.
Пытался, например, так:
=ИНДЕКС(Номера;НАИМЕНЬШИЙ(ПОИСКПОЗ($A$1;Даты;0);СТРОКА(ДВССЫЛ("1:100"))))
=ИНДЕКС(Номера;ПОИСКПОЗ($A$1;Даты;0))
Не пойму, то ли диапазон Даты должен уменьшаться, ведь ПОИСКПОЗ ищет первое значение, то ли вообще не туда ушел.
Заранее спасибо.
Количество совпадений по двум (и более) параметрам, VBA, Суммпроизв в vba выдает ошибку
 
Добрый день!
Решил сделать через vba процедуру, которая бы считала в таблице количество совпадений по двум (и более) параметрам, и через формулу excel "счётеслимн" это получалось на раз. Но когда стал делать в vba, возник ступор. Пробовал и через "суммпроизв" и через формулу массива "сумм", но все время вылетает ошибка. Может опять не вижу чего-то очевидного ) Пример во вложении, в нем забиты и работающие формулы excel и неработающие vba. Спасибо.
Пропустить элемент в Each-Next
 
Добрый день!
Периодически сталкиваюсь с тем, что при переборе данных циклом Each-Next , нужно проверить, соответствует ли каждый элемент определенному условию, прежде чем его обрабатывать дальше. Если не соответствует, необходимо перейти к следующему элементу, не обрабатывая этот (и не прекращая цикл). Все время это делаю посредством GoTo, но есть смутные догадки, что можно сделать как-то проще. А можно ли?
Пример:
Код
    For Each itm In ws.Range("Суммы")
        If itm = "" Then GoTo ToNext
        ...
        ...
ToNext:
    Next itm
Изменено: Ungrateful - 28.12.2015 16:28:40
Активируется DrawingObject
 
Добрый день!
Есть программа, которая через UserForm работает с данными на рабочем листе. Удаляет лишние строки, столбцы, лишние пробелы и и.д. Все было отлично и работало без ошибок, пока я для проверки не добавил диаграмму и рисунок. После нажатия на кнопке выбранный диапазон отображается правильно (selection). Но после вызова из формы процедуры, которая находится в модуле, выделение перескакивает на диаграмму. Нашел пока один способ этого избежать - объявляю глобальную переменную и в форме присваиваю ей значение selection. Но интересен сам момент - почему становится активной диаграмма? И можно ли этого избежать?
Изменено: Ungrateful - 13.08.2015 11:08:09
Глобальные переменные
 
День добрый.
Подскажите, пожалуйста, можно ли как-то задать глобальные переменные, которые бы рассчитывались при запуске любого макроса и воспринимались всеми процедурами?
Например:

Код
str = ThisWorkbook.Sheets("Данные")  .Range("A1")  
Set ws = ThisWorkbook.Sheets(str)


Как я понимаю, здесь ни Global ни Public не помогут.
Страницы: 1 2 След.
Наверх