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

Страницы: 1 2 3 4 След.
[VBA] Проверка добавленного файла перед запуском макроса
 
Дмитрий(The_Prist) Щербаков, идеальный сценарий в моем случае!
Мне по идее без разницы сколько там файлов будет, главное, чтобы проверка была! Спасибо!
[VBA] Запись уникальных значений массива в одну ячейку через запятую
 
Sanja, Евгений Смирнов, вы лучше всех! :) Не в первый раз меня выручаете!
Спасибо вам!
Изменено: BUCK - 02.11.2023 12:21:29
[VBA] Проверка добавленного файла перед запуском макроса
 
asesja, спасибо за ответ!
Подскажите, пожалуйста, а ваш код проверяет наличие вложенного в эксель файла? Или он проверяет его наличие на рабочем столе?

Я, возможно, не совсем прозрачно выразился:  мне нужно сделать проверку вложенного файла на лист экселя.  
[VBA] Проверка добавленного файла перед запуском макроса
 
Всем здравствуйте!

Подскажите, пожалуйста, можно ли через VBA реализовать проверку добавленного файла перед запуском последующего макроса?
Суть такова: запускаем первый макрос, добавляем файл (в примере это .txt файл). Далее перед запуском второго макроса происходит проверка о наличии файла: если есть - MsgBox "Файл есть", если нет, то MsgBox "Файла нет".

Я ничего лучше не смог придумать, кроме как сделать переменную Public, которая меняется на 1, при добавлении файла. Но его большая проблема в том, что при удалении этого файла обратного изменения на 0 не происходит. Может быть стоит каким-то образом зашить на этот объект сценарий удаления? Или данное решение совсем не в духе правильного направления?

Во вложении пример.
Всем спасибо!
Изменено: BUCK - 02.11.2023 11:05:45
[VBA] Запись уникальных значений массива в одну ячейку через запятую
 
Дмитрий(The_Prist) Щербаков, спасибо за наводку, я попробую. Пример я добавил сразу после публикации, так как форум при создании сообщения не дает вложить файлы.

P.S. у меня через Join не получится, так как нужно в словаре брать соответствия рынком сбыта к конкретному поставщику.
То есть поставщиков победителей может быть хоть 10, и мне получается нужно создавать на каждого победителя свой словарь только с его рынками сбыта? А как сделать так, чтобы словарь использовался только один? Или я не в том направлении рассуждаю?
Изменено: BUCK - 02.11.2023 10:19:15 (Добавил P.S.)
[VBA] Запись уникальных значений массива в одну ячейку через запятую
 
Всем доброго дня!

Я снова за помощью к вам с массивами.
Задача такая: есть массив на листе "Исходник", где мы выбираем определённого поставщика победителем на определенный товар и на определенный рынок сбыта и прописываем победителю % > 0 в колонке D. Далее, запуская макрос, на листе "Вывод" появляется список из поставщиков победителей и в ячейке справа их рынки сбыта через запятую (во вложении наглядный пример).

Я со своей стороны написал код на извлечение двумерного массива, который при наличии в колонке D значения "> 0" записывает поставщика и рынок сбыта. Далее через Словарь вычленил оттуда уникальные значения, но так как у меня со словарями пока все плохо, дальше вообще не понимаю как действовать. Подскажите, пожалуйста, что можно сделать?

Буду рад любой обратной связи! Спасибо!
Изменено: BUCK - 02.11.2023 09:58:11 (Добавил пример)
[VBA] Двусторонняя проверка наличия данных в двух массивах
 
МатросНаЗебре, отсутствующие данные все равно переносятся на новую книгу. Это неисправимо?
[VBA] Двусторонняя проверка наличия данных в двух массивах
 
МатросНаЗебре, нет слов, вы просто гений!
Один вопрос: как можно упростить код так, чтобы он обновленный Массив 2 выводил не на новую книгу, а изменял существующий Массив 2 на листе "Массив 2"? То есть, чтобы он удалял строки прямо там?
[VBA] Двусторонняя проверка наличия данных в двух массивах
 
Sanja, удалять строки только в Массиве 2, если в нем нет данных, которые есть в Массиве 1 (Массив 1 не трогаем)
В Массиве 1 нужно смотреть все ячейки (по 3 столбцам и n-строкам)
[VBA] Двусторонняя проверка наличия данных в двух массивах
 
Всем здравствуйте!

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

Нужно в Массиве 2 проверить по первому столбцу (A) есть ли то или иное значение ячейки в Массиве 1. Если нет - удалить всю строку; если есть - оставить.
Далее после выполнения данной процедуры, проверить каких данных в Массиве 2 (столбец А) нет, которые заявлены в массиве 1, и вывести MsgBox с найденными несоответствиями.
Подскажите, пожалуйста, как можно решить данную задачку? Буду благодарен за любой совет!
Спасибо!
Изменено: BUCK - 27.10.2023 13:42:59
[VBA] Слияние двух массивов с повторением
 
Спасибо ребята!
[VBA] Слияние двух массивов с повторением
 
МатросНаЗебре, спасибо вам большое!
[VBA] Слияние двух массивов с повторением
 
Jack Famous, согласен, сам глаза чуть не сломал :) Обновленный пример во вложении.
МатросНаЗебре, попытался слить два кода в одну, не получилось... Как раз затык при выгрузке данных из словаря похоже (код во вложении файла).
[VBA] Слияние двух массивов с повторением
 
Всем здравствуйте!

Передо мной стоит задачка: нужно из двух колонок с данными сделать двумерную таблицу, где данные первой колонки будут повторяться для каждого уникального значения второй колонки (визуально показал во вложении).
Я со своей стороны создал Dictionary, который записал все уникальные значения второй колонки в массив, но я не могу понять как вычленить все эти Items из словаря и сделать из него обычный массив данных. И в целом я уже запутался... Подскажите, пожалуйста, как можно реализовать данный код в VBA? Спасибо всем заранее!

P.S. похожую тему открывал ранее, но там не нужно было искать уникальные значения по колонке.
Слияние двух массивов в одну со множественной вставкой [VBA] (planetaexcel.ru)
Изменено: BUCK - 24.10.2023 16:07:07
[VBA] Worksheet_Change: срабатывание при вставки диапазона данных
 
МатросНаЗебре, спасибо вам больше за подсказку! Я крутился вокруг да около с For Each, но не мог понять как :)
MikeVol, тоже спасибо за отклик!
[VBA] Worksheet_Change: срабатывание при вставки диапазона данных
 
Всем доброго дня!

У меня есть код на изменение данных листа (ниже представлен), который прекрасно обрабатывает при изменении данных одной ячейки. Однако при вставке "как значения" данных по диапазону (например, сразу 10 ячеек), то он обработает только ту ячейку, в которую мы вставляем диапазон (на картинке виден результат).
Подскажите, пожалуйста, можно ли как-нибудь зарядить VBA отрабатывать код для всех ячеек куда были вставлены данные (а также удалять там, где диапазоном было сделано очищение)? Всем спасибо!

Код
Private Sub Worksheet_Change(ByVal Target As Range)

Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("2. Sheet")

a = sh.Cells(sh.Rows.Count, "D").End(xlUp).Row + 1

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False

    If Not Intersect(Target, Range("B4:B" & a)) Is Nothing Then
          
        If IsEmpty(Cells(Target.Row, 2)) Then
            sh.Range("B" & Target.Row & ":F" & Target.Row).ClearContents
            GoTo flag
        End If

        With sh
            .Range("C" & Target.Row).Formula = "=""Done"""
            .Range("D" & Target.Row).Formula = "=""Done"""
            .Range("E" & Target.Row).Formula = "=""Done"""
        End With
               
    End If

flag:

Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True
        
End Sub
Изменено: BUCK - 19.10.2023 11:11:32
[VBA] Исключение данных по ключу
 
Как всегда спасибо огромное! :)
Есть что по-изучать
[VBA] Исключение данных по ключу
 
Всем здравствуйте!

Подскажите, пожалуйста, можно ли в коде VBA при работе со сводными таблицами давать на исключение тех полей, которые содержат определенный текст? Пример ниже, спасибо!

Оригинальный код:
Код
With ActiveSheet.PivotTables("branch").PivotFields("Подотдел")
    .PivotItems("10-удалДВЕР").Visible = False
    .PivotItems("15-удалНАСТЕННЫЕ").Visible = False
    .PivotItems("35-удалЗАЩИТНЫЕ").Visible = False
    .PivotItems("10-удалитьЛЮСТРЫ").Visible = False
End With

Целевое решение (оно у меня не работает, но хотелось бы, чтобы так выглядело):

Код
With ActiveSheet.PivotTables("branch").PivotFields("Подотдел")
    .PivotItems("*удал*").Visible = False
End With
[VBA] Сбор данных из матрицы по критериям (коллекции)
 
Ребята, спасибо за помощь! Вы лучшие :)
Буду изучать предложенные варианты
[VBA] Сбор данных из матрицы по критериям (коллекции)
 
webley, спасибо большое за ответ!
Подскажите, пожалуйста, а можно ли в массивы добавлять столбцы не все сразу, а в определенном порядке, т.е. чтобы я мог брать определенные столбцы из исходной таблицы в определенном порядке?
Код
arr1(j1) = .Range("A" & r & ":E" & r)
[VBA] Сбор данных из матрицы по критериям (коллекции)
 
Всем здравствуйте!

Появилась задача разделить данные определенных столбцов из исходной таблицы в разные таблицы на другом листе, исходя из критерия. По подсказкам на форуме и в интернете, решил попробовать через коллекции. Написав код (есть в примере и ниже), понял что он очень громоздкий и не совсем удобный. Можете, пожалуйста, подсказать, как лучше переделать код, чтобы я научился чему-то новому, и чтобы он был эффективнее...? Для наглядности привожу описание задачи ниже.

Что имеем:
1. Исходная таблица имеет n столбцов, количество которых не изменяются (в примере для удобства сделал малое кол-во столбцов)
2. Количество строк в исходной таблице меняется (добавляется/убавляется)
3. В отдельном столбце считается критерий ("Категория") исходя из изменения данных год к году
Что хотим получить:
1. На выходе есть три таблицы: уменьшение суммы, увеличение и без изменений
2. Запуская макрос, код пробегает по столбцу "Категория" и разносит данные из определенных столбцов по разным таблицам на листе "Вывод", исходя из критерия

Скрытый текст

Всем неравнодушным заранее спасибо!  
Изменено: BUCK - 22.09.2023 10:59:01
UserForm - название кнопки от данных в ячейке
 
Дмитрий(The_Prist) Щербаков, только хотел написать, что нашел решение :)
Спасибо за помощь!
UserForm - название кнопки от данных в ячейке
 
Всем добрый день!

Очередной вопрос по VBA, на этот раз по UserForm. Подскажите, пожалуйста, можно ли как-либо сделать названия кнопок динамичными, которые будут меняться в зависимости от значения в ячейке на рабочем листе?
Дело в том, что у меня есть файл, который будет жить не один год, и было бы здорово, если данные в UserForm обновлялись в зависимости от выбранного года (выпадающий список - выбираем нужный год, потом в скрытых листах формируются данные для кнопок). Попытался через следующий код при запуске формы, но он не работает...
Код
Private Sub UserForm_Initialize()
    Me.CommandButton1 = Sheets("TOTAL").Range("J3").Text
End Sub
Изменено: BUCK - 18.09.2023 17:25:54
[VBA] Работа с переменными листов (1 to n)
 
Спасибо, ребята! Буду изучать предложенные темы :)
[VBA] Работа с переменными листов (1 to n)
 
Всем привет!

Разбираюсь с переменными в VBA и появилась идея облегчить код вводом переменной для листов и с их последующей работой. Ниже код: я задал переменные на листы "sht(1 To 7)", но как объявлять сразу всю группу, чтобы с ней работать так и не понял. Через For Each тоже не догоняю (у нас же не может быть лист в листе уже). Подскажите, пожалуйста, как правильно?
Код
Public sht(1 To 7) As Worksheet

Sub analysis()

Set sht1 = ThisWorkbook.Worksheets("Анализ - 1")
Set sht2 = ThisWorkbook.Worksheets("Анализ - 2")
Set sht3 = ThisWorkbook.Worksheets("Анализ - 3")
Set sht4 = ThisWorkbook.Worksheets("Анализ - 4")
Set sht5 = ThisWorkbook.Worksheets("Анализ - 5")
Set sht6 = ThisWorkbook.Worksheets("Анализ - 6")
Set sht7 = ThisWorkbook.Worksheets("Анализ - 7")

sht(1 to 7).Visible = False 'вот тут очевидная ошибка, для примера привел

End Sub
Изменено: BUCK - 15.09.2023 11:55:08
Слияние двух массивов в одну со множественной вставкой [VBA]
 
Поднимаю тему. Буду благодарен за ответ!

UPD. Ошибку нашел. Закрываю тему. Скорректированный код
Код
Sub M1AndM2()
  Dim m1, m2, m3, r1&, r2&, r3&, c&
  m1 = GetArr(Range(Cells(3, 5), GetBottomRange(Cells(3, 1))))
  m2 = GetArr(Range(Cells(3, 7), GetBottomRange(Cells(3, 7))))
  ReDim m3(1 To UBound(m1) * UBound(m2), 1 To 1 + UBound(m1, 2))
  For r2 = 0 To UBound(m2) - 1
    r3 = r2 * UBound(m1)
    For r1 = 1 To UBound(m1)
      m3(r1 + r3, 1) = m2(r2 + 1, 1)
      For c = 1 To UBound(m1, 2)
        m3(r1 + r3, 1 + c) = m1(r1, c)
      Next
    Next
  Next
  Cells(3, 9).Resize(UBound(m3), UBound(m3, 2)) = m3
End Sub
 
Private Function GetBottomRange(rr As Range) As Range
    If rr.Cells(2, 1).Value = "" Then
        Set GetBottomRange = rr.Cells(1, 1)
    Else
        Set GetBottomRange = rr.Cells(1, 1).End(xlDown)
    End If
End Function
 
Private Function GetArr(rr As Range) As Variant
    Dim arr As Variant
    If rr.Cells.CountLarge = 1 Then
        ReDim arr(1 To 1, 1 To 1)
        arr(1, 1) = rr.Value
    Else
        arr = rr.Value
    End If
    GetArr = arr
End Function
Изменено: BUCK - 28.07.2023 14:48:36
Слияние двух массивов в одну со множественной вставкой [VBA]
 
Всем снова здравствуйте!

После многочисленных тестов понял, что код, который ранее предложил МатросНаЗебре, не всегда отрабатывает корректно: если в одном из массивов 2 строки с данными, то код начинает вставлять данные в массив 3 до конца листа. А если данных либо 1 строка, либо 3 и более, то все хорошо.
Помогите, пожалуйста, с проблемой!

Спасибо.
Изменено: BUCK - 27.07.2023 20:00:44
Слияние двух массивов в одну со множественной вставкой [VBA]
 
МатросНаЗебре, Спасибо большое!
Слияние двух массивов в одну со множественной вставкой [VBA]
 
Всем здравствуйте!

Приходится поднимать тему, так как столкнулся с проблемой в коде, который предложил Игорь.

Если в рассматриваемых массивах приходится по одному значению, тогда макрос выделяет не диапазон в виде одной ячейки, а начинает идти вниз до конца листа, и, соответственно, размножает данные на более чем 1 млн. строк., хотя нужно было сделать массив 1Х1. Подскажите, пожалуйста, как поправить код или вставить ограничения, чтобы избежать такого множителя?

Спасибо!
Ошибка при обработке макроса замены всех данных на значения (UsedRange.Value)
 
Спасибо большое, RAN, Jack Famous, за подсказку и разъяснения!  
Страницы: 1 2 3 4 След.
Наверх