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

Страницы: 1
Запрет на сохранение файла при наличии пустых ячеек., как сохранить файл когда ячейки пусты но сохранить запрет
 
Доброго времени суток форумчане! Столкнулся с жесточайшим парадоксом ищу как выкрутиться!
У меня есть шаблон пустая таблица со строками и когда пользователь этот шаблон использует я хочу запретить сохранение пока он не заполнит столбец номер семь!
Вот макрос:
Код
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim i&
With Range("Таблица2").Parent.Range("G8:Таблица2")
   For i = .Row To .Row + .Rows.Count - 1
       If IsEmpty(.Parent.Cells(i, 7)) Then
           Cancel = True
           .Parent.Activate
           Cells(i, 7).Activate
           MsgBox "Заполните пустые ячейки основного обозначения или удалите лишние строки!!!", vbCritical
           Exit Sub
       End If
   Next
End With
End Sub

Но я не могу сохранить шаблон с макросом потому что строки пусты!!! как мне обойти это????
Может можно сделать макрос который активирует (создает)  макрос запрета только при открытии файла?
Тормозит выпадающий список с поиском на большое количество строк через комбобокс, ищу пути решения
 
Доброго дня форумчане. Загоняю в массив довольно большую таблицу, хотя мне кажется это не особо должно нагружать оперативку всего 12000 строк, но комбобокс с выпадающим списком очень подтормаживает при вводе значения для поиска. Может есть какая то возможность  "облегчить"?
Перебор по массиву из 1 значения не работает Ubound
 
Добрый день я загоняю в массив столбец умной таблицы
Код
arrAnalisTMC = Range("Analis[Цена согласно ТМЦ]").Value

а когда пытаюсь перебором со всеми элементами массива произвести действие
Код
For i = 1 To UBound(arrAnalisTMC)

если в таблице только одна строка у меня выдает ошибку Type mismatch (возможно arrAnalisTMC  становится простой переменной) если больше строк то все работает нормально,
как мне это обойти?
Файл не прикрепляю потому что огромный и много справочников привязано
Изменено: Семен Фадеев - 31.03.2022 09:20:25
Закрыть книгу Excel кодом VBA исполняемым в сторонней программе
 
Здравствуйте пишу скрипт для стороннего планировщика и в нем можно использовать код VBA, только он работает немного иначе чем из под редактора Excel и нужна Ваша подсказка. Вот так я файл открываю:

Код
Sub OpenAndRun(xlFileName)
  Set xlApp = CreateObject("Excel.Application")
  'remove next line to make Excel invisible
  xlApp.visible = true
  xlApp.WorkBooks.Open xlFileName, , , , ,1234
    'Uncomment next line to quit Excel
  'xlApp.quit
End Sub

А как мне потом закрыть нужный мне файл, если будут открыты при этом другие? GetObject использовать или другой метод? потому что например Excel.Application.WorkBooks(xlFilename).Close SaveFile:=False не работает (говорит нельзя скобки).
Как обратиться к таблице которая еще не создана и неизвестно какой будет у нее номер(индекс)
 
Доброго времени суток форумчане, желаю универсализировать уже имеющийся макрос, чтобы каждый год не вносить изменений.
Каждый год создается новый лист с идентичной таблицей и есть лист на котором идут расчеты при помощи макроса по годам.
Т.е. мы выбираем год и следующая формула подгружала данные с таблицы в массив для дальнейших действий:
Код
tb1 = ActiveWorkbook.Sheets("Исполнено_2021").ListObjects("Таблица4").DataBodyRange.Value

я её переделал слегка для того чтобы брать нужный лист:
Код
yearNum = Cells(2, 2)
tb1 = ActiveWorkbook.Sheets("Исполнено_" & yearNum).ListObjects("Таблица4").DataBodyRange.Value

А как обратиться к нужной таблице? Я предполагаю может можно взять индекс последней на последнем листе (2021) и через номер года вычислять индекс следующей? ну например на листе 2021 таблица с индексом 6 то для листа 2022 и любого следующего будет
Код
tabIndex = yearNum - 2015

и тогда универсальный код массива будет
Код
yearNum = Cells(2, 2)
tabIndex = yearNum - 2015
tb1 = ActiveWorkbook.Sheets("Исполнено_" & yearNum).ListObjects(tabIndex).DataBodyRange.Value

А может есть путь по красивее и адекватнее?
Вот привел пример файла в него будет добавляться в следующем году лист Исполнено_2022 потом через год Исполнено_2023 и на каждом новая умная таблица аналогично прошлому году. Как мне универсально загонять данные в массив tb1 при выборе нужного года соответственно? как обратиться к нужному листу я понимаю
Код
yearNum = Cells(2, 2)
tb1 = ActiveWorkbook.Sheets("Исполнено_" & yearNum)
... а как к новой таблице?
Изменено: Семен Фадеев - 28.12.2021 08:45:05
Как правильно преобразовать переменную в дату?
 
Доброго дня дорогие)) Помогите имениннику советом, всегда с датами в тупик захожу
ситуация до нельзя простая.
Вот есть переменные
Код
        minDate = "30.06.2021"
        maxDate = "01.10.2022"

Вот есть условие
Код
If minDate < tb1(n1, 20) And tb1(n1, 20) < maxDate Then

дело в том что значение tb1 это дата в формате даты, а значения переменных maxDate и minDate это строка
подскажите как задать их в формате даты и можно ли написать условие укороченно так
Код
If minDate < tb1(n1, 20) < maxDate Then
? Заранее спасибо!
Ограничение прав редакции таблиц для пользователей
 
Доброго времени суток, Уважаемые!
Есть таблицы на нескольких листах(Столбцы одинаковые), листы условно: долги | дорога | исполнено. Необходимо запретить полное удаление строк из любой таблицы, но при этом сохранить возможность перенести строки из одной таблицы в другую (не скопировать, а именно перенести, то есть, в одной таблице строка исчезла, в другой добавилась), а так же сохранить любую другую редакцию ячеек.
Подскажите возможно ли это реализовать средствами Excel?
Как отменить запрос на сохранение перед закрытием книги при выполнении макроса Workbook_BeforeClose
 
Привет знатоки VBA подскажите, вот есть у меня книга и при закрытии выполняется макрос, и тут же после выполнения, вместо закрытия книги, excel спрашивает сохранить ли изменения... как мне от этого уйти? Чтобы закрывалась книга без вмешательства пользователя
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call numIn
End Sub

Это при том что перед запуском макроса книга сохранялась.
Изменено: Семен Фадеев - 17.12.2021 07:53:33
Разделить радиокнопки на группы на одном листе
 
Можно ли сгруппировать радиокнопки чтобы иметь возможность в каждой группе выбрать одно значение?

Например:
Выбор из группы:
Формула 1
Формула 2
Формула 3

Выбор из группы:
Столбец 1
Столбец 2
Столбец 3

и т.д.
Изменить(отключить) условия запуска макроса(часть кода макроса) при помощи кнопки(радиокнопки, другого макроса)
 
Вот смотрите уважаемые господа, у нас есть макрос запускающий пользовательские формы при активации(выборе) определенных ячеек, но вот допустим какую то часть макроса я хочу временно отключить или закомментировать вот пример:
Код
Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo MyErrorHandler
If Target.Column = 4 And Target.Row = 4 Then
If IsEmpty(ActiveCell) = True Then
nameKontragent.Show
End If
End If
If Target.Column = 4 And Target.Row = 5 Then
If IsEmpty(ActiveCell) = True Then
managerName.Show
End If
End If
' и вот этот блок ниже я хочу закомментить или отключить
If Target.Column = 4 And Target.Row > 6 Then
If IsEmpty(ActiveCell) = True Then
bearingName.Show
End If
End If
' до этого места
If Target.Column = 5 And Target.Row > 6 Then
If IsEmpty(ActiveCell) = True Then
ostatkiBearingName.Show
End If
End If
If Target.Column = 4 And Target.Row = 3 Then
If IsEmpty(ActiveCell) = True Then
calendar.Show
End If


Как я могу это сделать, мне нужен какой то физический переключатель который бы активировал и деактивировал часть кода, это возможно?

Если да, то как?

Параллельное редактирование двух файлов
 
Существует файл источник данных (Учет движения поставок ПЗПК роботизированный) и файл куда подгружаются данные (УДО поставка) дублируя источник, но со скрытием(точнее исключением из массива путем перезаписи) пары столбцов. Менеджерами будет редактироваться информация в файле (УДО поставка) варианты редакции это:
заполнение ячеек в таблице
перенос строк из таблицы на одном листе в таблицу на другом, включая соответственно ячейки скрытых (удаленных) столбцов в файле дубликате.
Прошу Вас, О Великие гуру, подскажите как к этому вопросу подойти? Сижу в глубоком творческом кризисе и не знаю с чего начать, как подступиться....
Может набросаете план, или логику. Если у кого-то найдется время и силы на то чтобы код написать, вообще нижайший поклон Вам.
На листе справочник файла УДО поставка нужно переуказать местоположение файла Учет движения поставок ПЗПК роботизированный.
Пароль от файла Учет движения поставок ПЗПК роботизированный, 1234

Как решение задачи нужно чтобы изменения внесенные в файл дубликат, отражались и в файле доноре!
Изменено: Семен Фадеев - 01.12.2021 07:08:46
Преобразовать дату в цифры из которых она состоит.
 
Приветствую форумчане, у меня есть необходимость нумерации инвойсов в формате [короткое имя поставщика]-[дата в формате (24112021)]. Подскажите как это реализовать в коде VBA допустим что имя поставщика это AdBoArr(i2, 2), то [B12] = AdBoArr(i2, 2) & "-" & ... что дальше??
Копирование данных из таблицы в новый файл с полным сохранением форматирования и возможностью обновления данных
 
Есть файл учет движения поставок в него вносят данные скрипты и менеджеры по поставкам.
Ннеобходимо данные из этого файла подгружать в другой файл, который будут смотреть менеджеры по продажам. Вставляться будут не все столбцы, это в задаче еще не реализованно...как при этом сохранить форматирование и раскраску ячеек?
Основной файл защищен паролем 1234, файл дубликат (для менеджеров по продажам) УДО.

PS Вероятно не совсем корректно назвал тему.
Но нужно загрузить данные в массив из основного файла, выгрузить их в резервный с сохранением форматирования и раскраски ячеек. Как это можно реализовать? По возможности, с минимальными временными затратами на обработку данных.

Уважаемый модератор, Я полагая что имел (и имею) право разово "поднять" тему вторым сообщением (В рамках правил это не запрещено.) поскольку вы лишили меня возможности получить ответ удалив вложения, и те кто ее посмотрел не могли скачать вложения, следовательно отреагировать пока тема была "условно наверху". поэтому буду признателен если вы ее своим ответом поднимете.)
Изменено: Семен Фадеев - 17.11.2021 12:39:37
Ускорить работу макроса по размещению данных массива в умную таблицу
 
Подскажите пожалуйста как мне можно оптимизировать код?
Суть проста при загрузке с файла справочника подгружаются данные в массив и создается копия таблицы из справочника. но данные вносятся построчно и очень долго по сравнению с простым копи/паст(ом). Подскажите как это ускорить? arr3 это массив данных из справочника.
Код
Sub ToYear()
With ActiveSheet.ListObjects("Year2021").DataBodyRange
    If .Rows.Count > 1 Then
      .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).Rows.Delete
    End If
End With
       With Sheets("2021")
            arr3d = .[A2].Resize(UBound(arr3), 23).Value
            cr = 1
            For i = 1 To UBound(arr3)
                If IsError(arr3(i, 2)) = False Then
                For i1 = 1 To 23
                    arr3d(cr, i1) = arr3(i, i1)
                    Next
                    cr = cr + 1
                    If cr > 1 Then [Year2021].Resize(cr - 1) = arr3d
    End If
    Next
    End With
End Sub
Отображение одной и той же таблицы по разному для разной группы пользователей
 
Доброго дня форумчане, столкнулся Я с одной интересной задачей. Вот есть у меня табличка, зовется учет движения поставок.
И есть отдел закупок.
И есть отдел продаж.
Так вот Нужно чтобы отдел продаж, который, при всем при том, правит данную таблицу, имея право редакции, не видел столбца Цена продажи, а отдел менеджеров не видел реальную цену закупа. Как это возможно реализовать?
Помимо этого в данную табличку цена продажи вносится роботизированным пользователем во вкладке долги из заявок в поставку.
Вот сама табличка без лишних данных в минималистичном виде.
Подскажите какими путями это можно реализовать? я подумывал над двумя файлами которые через макрос бы создавались из главного, но тут с редактированием могут возникнуть сложности. Или может можно скрыть столбцы для определенных юзеров?
Ограничить Ввод в TextBox по строго заданной маске (шаблону)
 
Доброго вечера, Уважаемые знатоки!
Нижайший Вам поклон, подскажите, возможно ли маску телефонного номера серым цветом прописать в TextBox ну типа +7(___) ___-__-__ и чтобы заполнялись тока участки с _? Позволяет ли VBA такое сотворить?
Использование переменной в других SUBчиках
 
Добрый день уважаемые форумчане, очередной вопрос первокласника. Пытаюсь использовать одну и ту же переменную перенеся её значение из одного SUB в другой, но никак не выходит, подскажите как мне быть? Обязательно ли использовать
Код
Option Explicit
чтобы задать публичную переменную так:
Код
Public prvk As String
Потому что в новом Subчике она теряет свое значение
пробовал так сделать:
Код
ActiveDocument.Variables.Add Name:="prvk", Value:=ComboBox1.Text 
run-time error '424'
object required
не совсем понял что от меня требуется сделать в справке Microsoft
Код
Public Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim i, i1 As Long
If KeyCode = 13 Then
  If ComboBox1.Text <> "" Then
    ActiveCell = ComboBox1.Text
    If ComboBox1.Text <> "" Then
        factor = 1
        For i = 1 To UBound(arr2)
            If ComboBox1.Text = arr2(i, 1) Then
                factor = 0
                Exit For
            End If
        Next
        If factor Then
       ' ActiveDocument.Variables.Add Name:="prvk", Value:=ComboBox1.Text
        prvk = ComboBox1.Text
            If MsgBox("Вы хотите внести новый подшипник в Таблицу минимальных цен?", vbYesNo, "Выбор") = vbYes Then
                newBearingCard.Show ' ВОТ ЗДЕСЬ ВСПЛЫВАЕТ НОВАЯ ФОРМА И ПО НАЖАТИЮ КНОПКИ СРАБАТЫВАЕТ ВТОРОЙ SUB 



                Else
                ComboBox1.Text = ""
                Unload bearingName
                ActiveCell = ComboBox1.Text
                Exit Sub
            End If
        End If
    End If
    For i = 1 To UBound(arr2)
        If arr2(i, 1) = ComboBox1.Text Then
            Cells(ActiveCell.Row, 10) = arr2(i, 3)
            Cells(ActiveCell.Row, 11) = arr2(i, 4)
            Cells(ActiveCell.Row, 12) = arr2(i, 5)
            Cells(ActiveCell.Row, 13) = arr2(i, 7)
            Cells(ActiveCell.Row, 14) = arr2(i, 9)
            Cells(ActiveCell.Row, 15) = arr2(i, 2)
            Cells(ActiveCell.Row, 16) = arr2(i, 6)

            Exit For
        End If
    Next
  End If
ComboBox1.Text = ""
Unload bearingName
End If
If KeyCode = 27 Then
ComboBox1.Text = ""
Unload bearingName
End If
End Sub
Вот второй
Код
Public Sub addItemValues_Click()
itemPrefix = txtItemPrefix.Value
itemName = txtItemName.Text
itemSufix = txtItemSufix.Value
itemNameIso = txtiItemNameIso.Text
itemAccuracy = txtItemAccuracy.Value
innerDiameter = innerDiameter.Value
outerDiameter = outerDiameter.Value
itemWidth = itemWidth.Value
itemWeight = itemWeight.Value
If txtItemName.Value = "" And txtiItemNameIso.Value = "" Then
If MsgBox("Заполните наименование подшипника по ГОСТ или по ISO!", vbOKOnly, "Не заполнены обязательные поля!") = vbOK Then
Exit Sub
End If
End If

' Вот важный кусок где сравнивается переменная а она уже пуста ((
If itemName <> prvk Or itemNameIso <> prvk Then
If MsgBox("Вы ввели другое наименование подшипника!", vbOKOnly, "Наименование подшипника не совпадает!") = vbOK Then
Exit Sub
End If
End If


If IsNumeric(innerDiameter.Value) = False And innerDiameter.Value <> "" Then
If MsgBox("Укажите значение диаметра в миллиметрах! (например 40 или 40,381)", vbOKOnly, "Нарушен формат поля!") = vbOK Then
Exit Sub
End If
End If
If IsNumeric(outerDiameter.Value) = False And outerDiameter.Value <> "" Then
If MsgBox("Укажите значение диаметра в миллиметрах! (например 40 или 40,381)", vbOKOnly, "Нарушен формат поля!") = vbOK Then
Exit Sub
End If
End If
If IsNumeric(itemWidth.Value) = False And itemWidth.Value <> "" Then
If MsgBox("Укажите значение ширины(высоты) в миллиметрах! (например 40 или 40,381)", vbOKOnly, "Нарушен формат поля!") = vbOK Then
Exit Sub
End If
End If
If itemWeight.Value = "" Or IsNumeric(itemWeight.Value) = False Then
If MsgBox("Укажите Вес подшипника в килограммах!(например 0,015 если вес 15 грамм)", vbOKOnly, "Не заполнены обязательные поля!") = vbOK Then
Exit Sub
End If
End If
Application.ScreenUpdating = False
                    Set importWb = Workbooks.Open(Sheets("Справочник").[B5], , False, , , 1234)
                        lr = Cells(Rows.Count, 1).End(xlUp).Row + 1
                        Cells(lr, 3) = itemPrefix
                        Cells(lr, 4) = itemName
                        Cells(lr, 5) = itemSufix
                        Cells(lr, 6) = itemNameIso
                        Cells(lr, 7) = innerDiameter
                        Cells(lr, 8) = outerDiameter
                        Cells(lr, 9) = itemWidth
                        Cells(lr, 10) = itemAccuracy
                        Cells(lr, 11) = itemWeight
                        itemFullName = Cells(lr, 1)
                    importWb.Save
                    importWb.Close False
Application.ScreenUpdating = True
                    Cells(ActiveCell.Row, 10) = itemPrefix
                    Cells(ActiveCell.Row, 11) = itemName
                    Cells(ActiveCell.Row, 12) = itemSufix
                    Cells(ActiveCell.Row, 13) = itemNameIso
                    Cells(ActiveCell.Row, 14) = itemWeight
                    Cells(ActiveCell.Row, 4) = itemFullName
                    itemPrefix = txtItemPrefix.Value
txtItemName.Value = ""
txtItemSufix.Value = ""
txtiItemNameIso.Value = ""
txtItemAccuracy.Value = ""
innerDiameter.Value = ""
outerDiameter.Value = ""
itemWidth.Value = ""
itemWeight.Value = ""
Unload newBearingCard
Unload bearingName
End Sub

Буду признателен, любому совету рад. Файл не прилагаю слишком много справочников с конфиденциальной инфой.

Пользовательская форма прекращает работу Excel
 
В общем пользовательская форма с комбобоксом и выпадающим списком, каждый второй раз почему-то при её запуске срабатывает автоматически выпадание списка что приводит к глюку и вылетанию из Excel. Можете посмотреть где в коде причина выпадания списка самостоятельно не дожидаясь нажатия клавиш?
Вылетает по идее вот такая фигня: без самой формы и это приводит вылетанию:
Посмотрите код формы может найдется причина почему она выпадывает постоянно?
Код
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim i, i1 As Long
If KeyCode = 13 Then
  If ComboBox1.Text <> "" Then
    ActiveCell = ComboBox1.Text
    If ComboBox1.Text <> "" Then
        factor = 1
        For i = 1 To UBound(arr2)
            If ComboBox1.Text = arr2(i, 1) Then
                factor = 0
                Exit For
            End If
        Next
        If factor Then
            If MsgBox("Вы хотите внести новый подшипник в Таблицу минимальных цен?", vbYesNo, "Выбор") = vbYes Then
                newBearingCard.Show
                Else
                ComboBox1.Text = ""
                bearingName.Hide
                ActiveCell = ComboBox1.Text
                Exit Sub
            End If
        End If
    End If
    For i = 1 To UBound(arr2)
        If arr2(i, 1) = ComboBox1.Text Then
            Cells(ActiveCell.Row, 10) = arr2(i, 3)
            Cells(ActiveCell.Row, 11) = arr2(i, 4)
            Cells(ActiveCell.Row, 12) = arr2(i, 5)
            Cells(ActiveCell.Row, 13) = arr2(i, 7)
            Cells(ActiveCell.Row, 14) = arr2(i, 9)
            Cells(ActiveCell.Row, 15) = arr2(i, 2)
            Cells(ActiveCell.Row, 16) = arr2(i, 6)

            Exit For
        End If
    Next
  End If
  ComboBox1.Text = ""
bearingName.Hide
End If
If KeyCode = 27 Then
ComboBox1.Text = ""
bearingName.Hide
End If
End Sub

Private Sub UserForm_Initialize()
Dim s&
ComboBox1.MatchEntry = fmMatchEntryNone
   ComboBox1.List = arr3
   ComboBox1.Text = ""
End Sub

Private Sub ComboBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim n&, b&
Dim Txt$
Dim Spisok(), NewSpisok()
If KeyCode <> 38 And KeyCode <> 40 And KeyCode <> 13 Then
    ComboBox1.List = arr2
    
    b = 0
    Txt = UCase("*" & ComboBox1.Text & "*")
    If Txt = "" Then ComboBox1.List = arr2: Exit Sub
    
    ComboBox1.Clear
    Erase NewSpisok
    
    For i = 1 To UBound(arr2)
        If IsNumeric(arr2(i, 2)) Then
        If UCase(arr2(i, 1)) Like Txt Then
            b = b + 1
            ReDim Preserve NewSpisok(b)
            NewSpisok(b) = arr2(i, 1)
        End If
        End If
    Next

    If b <> 0 Then ComboBox1.List = NewSpisok
End If
End Sub

Private Sub ComboBox1_Change()
ComboBox1.DropDown
End Sub


Private Sub ComboBox1_Change()
ComboBox1.DropDown
End Sub

Я так думаю что дело в этом, но ведь он вроде не изменяется и не должен автораскрываться.
Можете запускать в режиме только для чтения в коем он и должен работать
Изменено: Семен Фадеев - 27.10.2021 14:23:17
Задать условие выдачи минимальной цены только при наличии трех конкурентов
 
В общем задачка по моему простая, но что-то я туплю: может мне формулу как то допилить можно или макросом это лучше и проще сделать?

весЦена за кг без ТРmin   ценаДата   мин.ценыЦена   с  учетом доставки до Россиипоставщик1234567
15575,73101,6020.07.202110548,502 101,60
57,4426,48288,0006.07.202131798,501288,00 523,81
82,3300,75291,2017.02.202135245,251291,20 590,63
20,7248,8860,6131.03.20217791,10160,61 110,88
3,2428,1916,1231.03.20211778,20116,12 18,5323,72
0,3369,181,3031.03.2021149,0171,52 1,661,30
2,11169,924,2231.03.2021627,567 4,22
Вот мне нужно чтобы третий столбец считался только при наличии трех конкурентных цен в последних семи столбцах
то есть  в данном случае 5 и 6 строка?
Изменено: Семен Фадеев - 19.10.2021 08:45:25
Как проще всего сохранить форматирование даты в умной таблице?
 
Доброго дня друзья!
Не думаю, что спрошу что-то новое, но не смог найти ничего простого доступного и понятного. А по сему, проявляю интерес:
Вот, у меня есть умная таблица со списком долгов по заявкам в поставку. В них добавляются новые строки из файлов свежих заявок при помощи планировщика.
Первая добавляется обычно нормально, а на следующей, формат даты обязательно слетает (нужен обычный краткий формат дд.мм.гггг. а становится мм.дд.гггг). А менеджер по продажам, которая приносит бабки, очень с...ка капризная и хочет чтобы все само настраивалось.))) Подскажите плиз! Вот исполняемый код:
Код
Sheets("заявка в поставку").Select
lr = Cells(Rows.Count, 4).End(xlUp).Row
arr = Range(Cells(8, 4), Cells(lr, 15)).Value
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Set importWb = Workbooks.Open("Y:\Цены+Учет\УЧЕТ\Учет движения поставок ПЗПК роботизированный.xlsm", , False, , , 1234)
Sheets("Долги").Select
lRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(lRow, 1).Resize(UBound(arr), UBound(arr, 2)) = arr
......? вот сюда нужно добавить код
importWb.Save
importWb.Close
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Path = "Z:\ЗАЯВКИ\Архив\ЗАЯВКИ в поставку\Отеч\2021\"
ThisWorkbook.SaveAs Path & [C4] & "_" & [C5] & "_" & [C3] & ".xlsb"

Как мне добавить сюда форматирование столбцов 2,12,19,20,22 умной таблицы ("Таблица5") в краткий формат даты (дд.мм.гггг)?

Заранее благодарен, как и за рекомендации по модернизации и оптимизации кода макроса.

Поочередное назначение макросов кнопке
 
В общем у меня в заявке есть три кнопки одна отправляет заявку на согласование после ее нажатия она исчезает и должна появиться вторая кнопка, она тоже выполняет определенные функции и сохраняет заявку в нужную папку отправляя ее письмом для исполнителя перед этим скрывается эта кнопка и появляется третья исполнено. если я сделаю на открытие книги сокрытие второй и третьей кнопок то они будут снова исчезать когда следующий пользователь будет открывать книгу.
Есть идеи как это сделать?
Можно вероятно создавать следующую кнопку и привязывать макрос на неё после нажатия предыдущей?
подскажите основные команды как создать кнопку, задать размеры в см и как ее разместить в нужные координаты или привязать к ячейке, задать надпись и шрифт с размерами, А так же привязать макрос, ну или посоветуйте какую нибудь статейку на эту тему
Изменено: vikttur - 04.10.2021 10:43:47
Получить корректный двумерный массив из видимых ячеек одной области диапазона
 

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

Код
arrAnalis = ActiveSheet.ListObjects("Analis").DataBodyRange.SpecialCells(xlCellTypeVisible)
For i = 1 To UBound(arrAnalis)
Cells(7 + i, 1) = arrAnalis(i, 14)
Cells(7 + i, 2) = arrAnalis(i, 10)
Cells(7 + i, 3) = arrAnalis(i, 11)
Cells(7 + i, 4) = arrAnalis(i, 12)
Cells(7 + i, 5) = arrAnalis(i, 13)
Cells(7 + i, 6) = arrAnalis(i, 5)
Cells(7 + i, 7) = arrAnalis(i, 7)
Next i 

Создание однотипных файлов на базе шаблона вставляя данные из таблицы excel
 
Доброго дня форумчане, помогите допилить таблицу, У меня есть таблица для массовой рассылки. И есть файл для вложения в котором две ячейки R3C4 R4C4 нужно заполнить данными из столбцов 1(адрес э/п) и 5(наименование завода) таблицы, после чего защитить лист, чтобы можно было редактировать только разрешенные ячейки (ActiveSheet.Protect Password:="123", DrawingObjects:=True, Contents:=True, Scenarios:=True ', так можно?) сохранить запрос по шаблону "путь\Request_"&№заявки из ячейки R2C4&"_"&данные_из_столбца_5(наименование завода)&".xlsx" и этот же путь прописать в столбце 4(путь к вложению) таблицы для рассылки. повторяя цикл для каждой строки пока строки в таблице не кончатся.
Если у кого есть время помогите кодом или хотя бы подскажите пошаговый путь...блок схему скрипта.
Выпадающий список с поиском с подгрузкой списков из закрытой книги (можно со скрытым открытием книги) с пополнением списка
 
Добрый день уважаемые! Помогите опыт в макросах минимальный, а задачу требуют решить! Подсобите пожалуйста
В данном шаблоне стоит пароль на редактирование чтобы его могли открыть только для чтения заполнить и сохранить новым файлом не испортив шаблон.
И поле контрагент заполняется путем всплывающей формы с комбобокс с поиском по списку с листа 2, необходимо лист два сохранить в отдельном файле и добавить функцию сохранения новых контрагентов в список в этом новом файле с всплывающим запросом нужно ли добавить новую позицию в список(я знаю как сделать расширение списка, но не знаю как это сделать для отдельной книги) отдельным файлом нужно потому что шаблон не под редакцией, а список нужно пополнять.
А поля основное обозначение заполняются с листа 3 который тоже нужно вынести в отдельный файл, потому что этот лист связан с огромными таблицами которые тоже пополняются и не могут быть в нередактируемом шаблоне. подскажите как мне отредактировать код чтобы данные подгружались из двух других книг. Причем вторая будет запаролена и должна открываться только для чтения.

ЗЫ возможно поможете адаптировать какой-то из этих методов под мою ситуацию? Мне просто не хватает опыта и понимания синтаксиса.
https://www.excel-vba.ru/chto-umeet-excel/kak-poluchit-dannye-iz-zakrytoj-knigi/

ЗЫ за быстрое решение проблемы с подробными комментариями в коде готов выделить поощрение в сумме 1000 деревянных рубчиков. Прошу перенести в соответствующий раздел форума
Изменено: Семен Фадеев - 26.05.2021 15:57:55
Страницы: 1
Наверх