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

Страницы: 1 2 След.
Как прописать пароль на снятие для VBA защиты в другой книге?, vba
 
Вопрос закрыт! Помог RAN с другого сайта! Нужно было добавить перед моей строкой Application.EnableEvents = True
Как прописать пароль на снятие для VBA защиты в другой книге?, vba
 
Здравствуйте. Подскажите пожалуйста, как мне сделать, чтобы проверочный файл, использовал пароль, для снятия защиты с листов? У меня такой код в книге №1:
Код
Set iTempWB = Workbooks.Open(FileName:=iSubdir & iFile.name, UpdateLinks:=False, ReadOnly:=True, Password:="1234")
Он открывает вторую книгу (не явно, сам для себя) и делает определенные манипуляции, но в той книге необходима защита некоторых ячеек, она установлена с помощью макроса (в ней тоже макрос и он должен выполнятся, поэтому так)
Код
Private Sub Workbook_Open()
    Dim arr, sSh
    arr = Array("Лист 1", "Лист 2", "Лист 3")
    For Each sSh In arr
        Protect_for_User_Non_for_VBA Me.Sheets(sSh)
    Next
End Sub
Sub Protect_for_User_Non_for_VBA(wsSh As Worksheet)
'    wsSh.Unrotect "1234"
    wsSh.Protect Password:="1234", AllowFiltering:=True, UserInterfaceOnly:=True
End Sub

Если пароля нет (такого кода), то первая книга спокойно обрабатывает эту книгу, но как только я добавляю этот код, он эту книгу пропускает! Как Быть. Если я устанавливаю явно защиту во второй книге без макроса, то у меня не корректно работает макрос во второй книге. Сделал чтобы и защита была и макрос работал, теперь при проверке его возник вопрос!

Как добавить в условие наименование листов, vba
 
Здравствуйте. Подскажите пожалуйста, как в условие прописать нужные листы
Например:
Код
IfwsLevel1 = Sheets(Array("Лист2","Лист3","Лист4"))Then
    Level3.ListBox1.AddItem (wbCurrent.Sheets(wsLevel).Cells(1, 3).Value & "-" & wbCurrent.Sheets(wsLevel).Cells(lr.Row, 3).Value)
    Level3.ListBox1.AddItem (wbCurrent.Sheets(wsLevel).Cells(1, 4).Value & "-" & wbCurrent.Sheets(wsLevel).Cells(lr.Row, 4).Value)
    Level3.ListBox1.AddItem (wbCurrent.Sheets(wsLevel).Cells(1, 5).Value & "-" & wbCurrent.Sheets(wsLevel).Cells(lr.Row, 5).Value)
    ElseIf wsLevel1 = Sheets(Array("Лист5")).Select Then
    Level3.ListBox1.AddItem (wbCurrent.Sheets(wsLevel).Cells(1, 3).Value & "-" & wbCurrent.Sheets(wsLevel).Cells(lr.Row, 3).Value)
    ElseIf wsLevel1 = Sheets(Array("Лист7")).Select Then
    Level3.ListBox1.AddItem (wbCurrent.Sheets(wsLevel).Cells(1, 4).Value & "-" & wbCurrent.Sheets(wsLevel).Cells(lr.Row, 4).Value)
    ElseIf wsLevel1 = Sheets(Array("Лист8")).Select Then
    Level3.ListBox1.AddItem (wbCurrent.Sheets(wsLevel).Cells(1, 4).Value & "-" & wbCurrent.Sheets(wsLevel).Cells(lr.Row, 4).Value)
    ElseIf wsLevel1 = Sheets(Array("Лист9")).Select Then
    Level3.ListBox1.AddItem (wbCurrent.Sheets(wsLevel).Cells(1, 3).Value & "-" & wbCurrent.Sheets(wsLevel).Cells(lr.Row, 3).Value)
    End If
Можно по значению выпадающего списка, все дело в том, что на каждом листе своя структура ТЧ, если я просто выполняю эти
Код
Level3.ListBox1.AddItem (wbCurrent.Sheets(wsLevel).Cells(1, 3).Value & "-" & wbCurrent.Sheets(wsLevel).Cells(lr.Row, 3).Value)    Level3.ListBox1.AddItem (wbCurrent.Sheets(wsLevel).Cells(1, 4).Value & "-" & wbCurrent.Sheets(wsLevel).Cells(lr.Row, 4).Value)
    Level3.ListBox1.AddItem (wbCurrent.Sheets(wsLevel).Cells(1, 5).Value & "-" & wbCurrent.Sheets(wsLevel).Cells(lr.Row, 5).Value)
строки,  то у меня отображается для Листа2, Листа3, Листа4 все нормально (там структура одинакова, 3 цены в одинаковых колонках), а вот в других листах, где по 1 цене (один столбец), а где две цены, вот мне и нужно, чтобы было так, если выпадающем списке я выбираю второй лист, то действовал первый вариант, если лист 5, то второй вариант и т.д.
Описание товара с другой книги, в определенную строку бланка заказа
 
Дмитрий(The_Prist) Щербаков, Все всем спасибо, сдвинул все столбцы в нужном листе на один столбец и все заработало1  
Описание товара с другой книги, в определенную строку бланка заказа
 
Дмитрий(The_Prist) Щербаков,Н/Д
Описание товара с другой книги, в определенную строку бланка заказа
 
Добрый день. Подскажите пожалуйста, почему не срабатывает формула! Скорее всего даже дело не в формуле а в диапазоне, как лучше сделать, чтобы все работало? Имеется такая формула:
Код
=ЕСЛИОШИБКА(ВПР($A5;Прайс.xlsm!Таблица10[#Данные];2;0);"")

Она выводит данные описания , с другой =ЕСЛИОШИБКА(ВПР($A5;Прайс.xlsm!Таблица10[#Данные];2;0);""), в определенную строку бланка заказа!
в другой строке, есть аналогичная формула, только разумеется ссылается на туже книгу, только другой лист, но и сравнивает другую ячейку. Так вот, вторая формула работает, все нормально (в выпадающем списке выбираем нужную номенклатуру и автоматически подставляется описание этой номенклатуры, а вот в первой формуле нет! Не могу понять почему. Формула ссылается на Диспетчер имен (умная таблица)!
Изменено: vikttur - 04.08.2021 23:23:07
Как привязать выпадающий список, к активной ячейке?, vba
 
Еще в модуле есть такой код:
Код
Public Sub GetPointCoordinates(ByVal cellrange As Range, ByRef pointcoordinates As pointcoordinatestype)
  Dim i As Long
    ConvertUnits
    Set cellrange = cellrange.MergeArea
    For i = 1 To ActiveWindow.Panes.Count
        If Not Intersect(cellrange, ActiveWindow.Panes(i).VisibleRange) Is Nothing Then
            pointcoordinates.Left = PixelsToPointsX(ActiveWindow.Panes(i).PointsToScreenPixelsX(cellrange.Left))
            pointcoordinates.Top = PixelsToPointsY(ActiveWindow.Panes(i).PointsToScreenPixelsY(cellrange.Top))
            pointcoordinates.Right = pointcoordinates.Left + cellrange.Width * zoomratio
            pointcoordinates.Bottom = pointcoordinates.Top + cellrange.Height * zoomratio
            Exit Sub
        End If
    Next
End Sub
Как привязать выпадающий список, к активной ячейке?, vba
 
Здравствуйте. Подскажите пожалуйста, у меня есть много выпадающий список, реализованный средствами vba, как мне прописать в коде, чтобы список выпадал от правого нижнего угла активной ячейки в экселе, а то она выпадает где захочет.
Код
Private Sub UserForm_Initialize()
    Dim pointcoordinates As pointcoordinatestype, horizontaloffsetinpoints As Double, verticaloffsetinpoints As Double
    With Me
        horizontaloffsetinpoints = (.Width - .InsideWidth) / 2
        verticaloffsetinpoints = 1
        Call GetPointCoordinates(ActiveCell.Offset(0, 1), pointcoordinates)
        .StartUpPosition = 0
        .Top = pointcoordinates.Top - verticaloffsetinpoints
        .Left = pointcoordinates.Left - horizontaloffsetinpoints
    End With
    Dim ws          As Worksheet

'    Set wbCurrent = ActiveWorkbook("Бланк заказа") это как было в одной книге, а ниже я пытаюсь обратиться к той книге
    Set wbCurrent = Workbooks("Прайс Общий с макросами и многовыпадающитм списком")

    For Each ws In wbCurrent.Worksheets
        If InStr(1, ws.Name, ".", vbTextCompare) > 0 Then
            n = n + 1
            Level1.ListBox1.AddItem (ws.Name)
            If Len(ws.Name) > lenT Then lenT = Len(ws.Name)
        End If
    Next

    Dim ihWnd, hStyle
    If Val(Application.Version) < 9 Then
        ihWnd = FindWindow("ThunderXFrame", Me.Caption)
    Else
        ihWnd = FindWindow("ThunderDFrame", Me.Caption)
    End If
    hStyle = GetWindowLong(ihWnd, GWL_STYLE)
    hStyle = hStyle And Not WS_CAPTION And Not WS_BORDER
    SetWindowLong ihWnd, GWL_STYLE, hStyle
    SetWindowLong ihWnd, GWL_EXSTYLE, 0
    DrawMenuBar ihWnd
    Level1.Height = n * 20
    Level1.Height = Level1.Height + GWL_EXSTYLE
    Level1.Width = lenT * 2
    Level1.ListBox1.Height = Level1.Height
    Level1.ListBox1.Width = Level1.Width

End Sub

Я так понимаю, что снизу должно быть записано Level1.TextBox1.Top = ???????, и Level1.TextBox1.Left = ???????, только вот, что прописать за равенством
Как добавить строку со значениями (формулами, ссылками) над или под активную строку?
 
МатросНаЗебре,Получилось, спасибо. Только ПОБЕД.
Как добавить строку со значениями (формулами, ссылками) над или под активную строку?
 
МатросНаЗебре, Здравствуйте. Еще один вопрос. Подскажите, а можно внести в этот код изменения, чтобы после добавления строки кодом, в ячейке количество по умолчанию всегда было 1!  
Запретить сохранять изменения в определенном листе книги
 
Дмитрий(The_Prist) Щербаков, Спасибо
Запретить сохранять изменения в определенном листе книги
 
Юрий М, Здравствуйте, а можете помочь! Как написать,  а также как копировать автоматически при открытии?!
Запретить сохранять изменения в определенном листе книги
 
Юрий М, ну тогда как копию сделать, точнее копию то  я сделать смогу, как удалять его автоматически при закрытии и делать копию автоматически при входе в документ
Запретить сохранять изменения в определенном листе книги
 
Дмитрий(The_Prist) Щербаков,теперь вопрос, я вывел на отдельный лист бланк заказа, как его теперь правильно защитить, чтобы его можно было менять всяко разно, но сохранить нельзя было, если только сохранить как!
Запретить сохранять изменения в определенном листе книги
 
Все допетрил, спасибо
Запретить сохранять изменения в определенном листе книги
 
Юрий М,Есть идеи как?
Запретить сохранять изменения в определенном листе книги
 
Юрий М,ну так не интересно, я думал при сохранении или печати они автоматически уходят
Запретить сохранять изменения в определенном листе книги
 
Юрий М, а это нужно, менеджер будет добавлять строки, заказы же разные.
Запретить сохранять изменения в определенном листе книги
 
Юрий М, это как?
Запретить сохранять изменения в определенном листе книги
 
Юрий М,Там нет такого, я имею ввиду, запрет на сохранение
Запретить сохранять изменения в определенном листе книги
 
Михаил, Здравствуйте, а при печати или сохранении удалять? Это не удобно, может есть макросом код какой ?
Запретить сохранять изменения в определенном листе книги
 
Здравствуйте. Подскажите пожалуйста, как запретить сохранять изменения в определенном листе книги эксель. Например у нас есть файл в нем много листов, один из них бланк заказа, так вот юзер может дополнять строки в листе бланк заказа, удалять строки, но при сохранении всей книги, бланк не сохранялся, а если есть изменения на других листах то должно сохранится, потому что на других листах содержится номенклатура, а бланк мы проста с помощью выпадающих списков наполняем, как наполнили распечатали или сохранили как и все!
Определение адреса последней ячейки с помощью vba
 
Дмитрий С,вопрос закрыт
Как привязаться к ячейкам с текстовым идентификатором, чтобы макрос действовал в определенном диапазоне?
 
МатросНаЗебре, Большое спасибо, теперь супер! Хорошего дня
Определение адреса последней ячейки с помощью vba
 
SAS888,все понял, свой код то не вставил, а как еще указать, чтобы код данный срабатывал ТОЛЬКО В ПЕРВОМ СТОЛБЦЕ, но ТАКЖЕ МЕЖДУ СТРОКАМИ. Сейчас код свой вставил, все работает, но только во всех столбцах, а мне нужно только в первом
Как привязаться к ячейкам с текстовым идентификатором, чтобы макрос действовал в определенном диапазоне?
 
МатросНаЗебре, все понял, свой код то не вставил, а как еще указать, чтобы код данный срабатывал ТОЛЬКО В ПЕРВОМ СТОЛБЦЕ, но ТАКЖЕ МЕЖДУ СТРОКАМИ. Сейчас код свой вставил, все работает, но только во всех столбцах, а мне нужно только в первой
Определение адреса последней ячейки с помощью vba
 
SAS888,Здравствуйте, у меня код, вообще ни как не реагирует, щелкал разные столбцы, в диапазоне между словом работы и Услуги, и выше и ниже
В представленном коде снизу есть закомментированный код, он работает, но в диапазоне от A7 до A500, а мне нужно чтобы было только между двумя строками ОТ (не включая) с словом РАБОТЫ и ДО (не включая) с словом УСЛУГИ , ниже я скинул скрин, как у меня составлен бланк, причем макрос должен активироваться только в первом столбце, между упомянутыми выше строками.
Это код:
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)Cancel = True
''Application.ScreenUpdating = False
 Dim U As Range
    On Error Resume Next
    Set U = ActiveSheet.UsedRange.Find(What:="Работы", LookAt:=xlWhole)
    On Error GoTo 0
    If Not U Is Nothing Then
        Dim t As Range
        On Error Resume Next
            Set t = ActiveSheet.UsedRange.Find(What:="Услуги", LookAt:=xlWhole)
            Set t = t.MergeArea
        On Error GoTo 0
        If Not t Is Nothing Then
            If Not Intersect(Target, Range(t, U)) Is Nothing Then
                Debug.Print "YOUR CODE"
            End If
        End If
    End If
'Dim U As Range
'Set U = Sheets("Áëàíê çàêàçà").Range("A7:A500")
'If Not Intersect(Target, U) Is Nothing Then
'Level1.Show
'End If
''Application.ScreenUpdating = True
End Sub


Из скрина видно, что до строки Работы, будет заполнятся категория товары и разная категория, которая вручную набивается, а после услуги тоже будет забиваться с помощью простого выпадающего списка. ВЫШЕ строки РАБОТЫ и НИЖЕ строки УСЛУГИ, я все сделал, а вот теперь нужно сделать между строками С РАБОТЫ и УСЛУГИ.
Как привязаться к ячейкам с текстовым идентификатором, чтобы макрос действовал в определенном диапазоне?
 
МатросНаЗебре, Здравствуйте, не получается, вообще ни как не реагирует, щелкал разные столбцы, в диапазоне между словом работы и Услуги.
В представленном коде снизу есть закомментированный код, он работает, но в диапазоне от A7 до A500, а мне нужно чтобы было только между двумя строками, ниже я скинул скрин, как у меня на самом деле.
Это код:
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
''Application.ScreenUpdating = False
 Dim U As Range
    On Error Resume Next
    Set U = ActiveSheet.UsedRange.Find(What:="Работы", LookAt:=xlWhole)
    On Error GoTo 0
    If Not U Is Nothing Then
        Dim t As Range
        On Error Resume Next
            Set t = ActiveSheet.UsedRange.Find(What:="Услуги", LookAt:=xlWhole)
            Set t = t.MergeArea
        On Error GoTo 0
        If Not t Is Nothing Then
            If Not Intersect(Target, Range(t, U)) Is Nothing Then
                Debug.Print "YOUR CODE"
            End If
        End If
    End If
'Dim U As Range
'Set U = Sheets("Áëàíê çàêàçà").Range("A7:A500")
'If Not Intersect(Target, U) Is Nothing Then
'Level1.Show
'End If
''Application.ScreenUpdating = True
End Sub

Из него видно, что до строки Работы, будет заполнятся категория товары и разная категория, которая вручную набивается, а после услуги тоже будет забиваться с помощью простого выпадающего списка. ВЫШЕ строки РАБОТЫ и НИЖЕ строки УСЛУГИ, я все сделал, а вот теперь нужно сделать между строками С РАБОТЫ и УСЛУГИ.

Изменено: Дмитрий С - 17.06.2021 12:27:20
Как привязаться к ячейкам с текстовым идентификатором, чтобы макрос действовал в определенном диапазоне?
 
МатросНаЗебре,Спасибо, попробую!
Как привязаться к ячейкам с текстовым идентификатором, чтобы макрос действовал в определенном диапазоне?
 
МатросНаЗебре, Здравствуйте. Так здесь тоже привязка идет не к значению (товары, работа) а к конкретной ячейке А5, Z9, но у меня они в разных заказах, будут разные!  
Страницы: 1 2 След.
Наверх