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

Страницы: 1
Защита выпадающего списка от копирования/вставки
 
Здравсnвтуйте!
Существует проблема по защите ячеек из выпадающего листа от вставки после копирования.
Известно, что при этом слетает сам выпадающий список.
Есть такой макрос, который призван защитить определенные области от вставок , в том числе и от вставки из другого источника.

Косяк макроса в том, что он отключает команду Вставить на всех листах когда речь идет о копировании из внешнего источника.
При копировании внутри самого файла- все работает отлично.

Этот кусок вставляется в ThisWorkbook:
Код
Option Explicit
Private Sub Workbook_Activate()
     'Force the current selection to be selected, triggering the appropriate
     'state of the cut, copy & paste commands
    Call ChkSelection(ActiveSheet)
    Application.CellDragAndDrop = False
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
     'Re-enable the cut, copy & paste commands
    Call ToggleCutCopyAndPaste(True)
    Application.CellDragAndDrop = True
End Sub
Private Sub Workbook_Deactivate()
     'Re-enable the cut, copy & paste commands
    Call ToggleCutCopyAndPaste(True)
    Application.CellDragAndDrop = True
End Sub
Private Sub Workbook_Open()
     'Force the current selection to be selected, triggering the appropriate
     'state of the cut, copy & paste commands
    Call ChkSelection(ActiveSheet)
    Application.CellDragAndDrop = False
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Call ChkSelection(Sh)
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
     'Toggle the cut, copy & paste commands on selected ranges
    Call ChkSelection(Sh)
End Sub
а этот кусок вставляется в Модуль:
Код
Option Explicit
Public Function InRange(Range1 As Range, Range2 As Range) As Boolean
' Added function to check if Cell is In Range
' returns True if Range1 is within Range2'
Dim InterSectRange As Range
    Set InterSectRange = Application.Intersect(Range1, Range2)
    InRange = Not InterSectRange Is Nothing
    Set InterSectRange = Nothing
End Function
Sub ChkSelection(ByVal Sh As Object)
    'Added Primarily to have one place to set restrictions
    'It also fixes the issue where a cell you don't want to
    'copy/paste from/to is already selected, but you
    'came from a sheet that wasn't protected.
     
    Dim rng As Range
    Set rng = Range(Selection.Address)
 
    Select Case Sh.Name
    Case Is = "Sheet1"
        'Disable copy and paste for anything in column A
        If InRange(rng, Columns("A")) Then
            Call ToggleCutCopyAndPaste(False)
        Else
            Call ToggleCutCopyAndPaste(True)
        End If
 
    Case Is = "Sheet2"
        'Disable copy and paste for anything in range G1 to G20
        If InRange(rng, Range("G1:G20")) Then
            Call ToggleCutCopyAndPaste(False)
        Else
            Call ToggleCutCopyAndPaste(True)
        End If
 
    Case Else
        Call ToggleCutCopyAndPaste(True)
    End Select
 
End Sub
Sub ToggleCutCopyAndPaste(Allow As Boolean)
     'Activate/deactivate cut, copy, paste and pastespecial menu items
    Call EnableMenuItem(21, Allow) ' cut
    Call EnableMenuItem(19, Allow) ' copy
    Call EnableMenuItem(22, Allow) ' paste
    Call EnableMenuItem(755, Allow) ' pastespecial
      
 
     'Drag and Drop Disabled from Original code due to deselecting what has been
     'copied and not allowing paste.  Moved to when workbook opens.
     'Drag and drop will not be allowed for entire workbook.
      
     'Activate/deactivate cut, copy, paste and pastespecial shortcut keys
    With Application
        Select Case Allow
        Case Is = False
            .OnKey "^c", "CutCopyPasteDisabled"
            .OnKey "^v", "CutCopyPasteDisabled"
            .OnKey "^x", "CutCopyPasteDisabled"
            .OnKey "+{DEL}", "CutCopyPasteDisabled"
            .OnKey "^{INSERT}", "CutCopyPasteDisabled"
        Case Is = True
            .OnKey "^c"
            .OnKey "^v"
            .OnKey "^x"
            .OnKey "+{DEL}"
            .OnKey "^{INSERT}"
        End Select
    End With
End Sub
  
Sub EnableMenuItem(ctlId As Integer, Enabled As Boolean)
     'Activate/Deactivate specific menu item
    Dim cBar As CommandBar
    Dim cBarCtrl As CommandBarControl
    For Each cBar In Application.CommandBars
        If cBar.Name <> "Clipboard" Then
            Set cBarCtrl = cBar.FindControl(ID:=ctlId, recursive:=True)
            If Not cBarCtrl Is Nothing Then cBarCtrl.Enabled = Enabled
        End If
    Next
End Sub
  
Sub CutCopyPasteDisabled()
     'Inform user that the functions have been disabled
    MsgBox "Sorry! Cutting, copying and pasting have been disabled for the specified range."
End Sub
Ограничение доступа на запуск макроса
 
Здравствуйте!

Есть список людей, которые могут запускать макрос.
Уже есть код, но у меня вопрос, есть ли красивое решение ссылающееся на диапазон? вместо прописания всех ячеек.. как у меня
Список юзеров прописан в ячейках H1:H10 листе md
Код
If Environ("Username") <> Sheets("md").Range("H1") Or Environ("Username") <> Sheets("md").Range("H2") Then
MsgBox "You do not have permission to run this Script", , "Warning!!!"
End
End If
Персонализация письма в VBA
 
Здравствуйте!

У меня уже есть макрос, который высылает эксель файл адресату из ячейки. Только мне хотелось бы в обращении указать имя получателя, опять таки из ячейки из самого файла. Чтоб обращение не было безликим.

Вот код, хотелось бы после слова Добрый вечер, вставить имя из ячейки D2 Sheets("Main")
Код
Dim OutApp As Object
   Dim OutMail As Object
   Dim xOutMsg As String
   Dim Recipient As Range
   
   On Error Resume Next
   
   Set OutApp = CreateObject("Outlook.Application")
   Set OutMail = OutApp.CreateItem(0)
   With OutMail
   .Display
   End With
 
   Recipient = Sheets("Main").Range(D2).Value
   xOutMsg = "<p style='font-family:ARIAL;font-size:22'><b>Добрый день,  </b><br/>Прошу рассмотреть мою заявку на заказ в приложении.</p>"
   Signature = OutMail.HTMLBody
   
   With OutMail
       .To = Sheets("Main").Cells(2, 4).Value & ";" & Sheets("md").Cells(1, 10).Value 'адрес получателя
       .Subject = "Ответ: Заявка на заказ " & ActiveWorkbook.Sheets("md").Cells(5, 10) & "_" & TekData 'тема письма
       .HTMLBody = xOutMsg & Signature    'текст письма Sheets("md").Cells(3, 10).Value
       .Attachments.Add ActiveWorkbook.FullName
       .Display
   End With
   'With OutMail
   '.send
   'End With
   

   On Error GoTo 0
   Set OutMail = Nothing
   Set OutApp = Nothing
   Application.ScreenUpdating = Tru
'ActiveWorkbook.Close
End Sub

Я сделала вот так:  
Код
xOutMsg = "<p style='font-family:ARIAL;font-size:22'><b>Добрый день, & Recipient & </b><br/>Прошу рассмотреть мою заявку на заказ в приложении.</p>"

Но это просто выдало слово реципиент как текст((
И понятно, ведь OutMsg - задан как строка.
Изменено: Salta-301 - 14.05.2020 21:08:43
Требуется Макрос по переносу данных из одного файла в два разных
 
Доброго всем дня!
Требуется макрос, который по признаку в опред. колонке переносил бы ( и соответственно, сохранял) данные в один, либо в другой сборный файл.
Сборный файл находится на shared point.
Макрос должен определять последнюю пустую строку в сборочных файлах, и вставить начиная с нее.
Надеюсь понятно.
Какие могут быть сложности с работой макроса в Shared point?
Требуется Макрос по вставлению формул, Путем определения последней строки в таблице.
 
Доброго дня!
Есть некая таблица данных в которой несколько столбцов- это формулы.
Из-за того, что строк довольно не мало (1500) файл в общей сложности весит 17 мб.
Во избежание этого(тяжести файла) хочу макрос, который будет определять последнюю строку, и вставлять в эти рейнджи формулы..(в каждый столбец своя формула)
Вставлять естественно значениями.
Есть аналогичный файл, с макросом, который настроен извлекать последнюю строку из сводной таблицы, но он вставляет формулы путем копирования с уже прописанных ячеек.
И на обычную таблицу этот макрос не сработал.
Жду ваших предложений и советов.  
Сводная таблица. Сортировка по Grand total при наличии 2 и более полей в блоке
 
Добрый день, помогите отсортировать строки значениям в колонке Grand Total, если имеется 2 и более полей в блоке Строки в сводной таблице.
Проблема в том, что при использовании сортировки в More Options- он сортирует внутри выбранного поля.
Например, в строках есть такие поля как департамент, отдел, сотрудник и , а по столбцам идут месяцы.
в значениях у нас к примеру деньги, кто сколько сдал.
И вот есть у нас столбец Grand total и по нему нужно отсортировать, чтоб он не сортировал внутри департамента, а потом внутри отдела и далее.
В данный момент эксель так и делает, и у меня в колонке Grand Total- сплошной хаос.
Нажатие правой кнопкой и сортировка внутри столбца- не приводит ни к каким изменениям вообще.
Макрос для отправки таблицы в "Базу" на Sharepointe
 
Доброго дня, светлейшие умы экселя!
Прошу помочь
На Sharepointe существует база данных по заказам клиентов.
В данный момент она пополняется вручную. Копи\Паст. А именно, к сотруднику прилетает письмо, с вложением эксель шаблона.
Он его открывает и переносит в файл.

Внимание вопрос:
Можно ли встроить в шаблон макрос(или какую-нибудь другую силу небесную), чтоб файл с компьютера отправителя сам залетал в "Базу" которая повторюсь находится на sharepoint.

Вариант доступа в базу для всех прошу не предлагать. А так же создание Базы в интранете тоже не предлагать.. Это слишком большие деньги.
Наложение сводных таблиц
 
Доброго дня всем,

Осмелюсь побеспокоить вас вопросом о том, как избежать наложения нескольких пивотов (сводных) один на другой при фильтрации (увеличении количества строк) если они находятся на одном листе.
Уже прошерстила весь иностр контент и нашла только один сомнительный вариант: определить динамический рейндж для пустых ячеек, и записать макрос на обновление пивота по удаление всей строки в рамках динамического рейнджа.

Само определение пустого динамического поля выглядело так:
Код
=Sheet2!$A$9:INDEX(Sheet2!$A:$A,MATCH("Grand Total",Sheet2!$A:$A,0)+1)

а макрос предложен такой
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Cells.EntireRow.Hidden = False
    Range("theGap").EntireRow.Hidden = True
End Sub

Но, увы! Не работает!

Прошу помочь! Советы из серии размести пивоты по разным страницам- не принимаются.
Задача в Power Query
 
Требуется отличный программер по PQ, для выполнения задачи.

Задача: Перемножить продажи на доли для вычисления продажи по различным каналам, под каналам, складам, и вкусам(по продуктам)
1. Файл источник:прогноз продаж в крупной детализации, в котором уже есть коды PQ
2. Файл долей: историяпродаж за 3 месяца , чтобы вычислить доли.(каждого канала, каждого склада, каждого канала внутри склада итп)

Связь через личку [ МОДЕРАТОР]
Как изменить формулу чтоб добавить букву Q в расчет квартала в Power query
 
ошибка
Изменено: Salta-301 - 04.04.2019 08:42:58
Определение номера квартала по сокращенному названию месяца в вычисляемом столбце Power Query
 
Доброго времени суток,
Задача построить столбец кварталов.
Есть некий столбец с месяцами в определенном формате "Jan", "Feb", "Mar" и тд
Подскажите как написать формулу для квартального столбца в PQ :
если в  столбце месяцев написано "Jan", то  равно "Q1"
То же самое для Feb, Mar
для Apr-> "Q2"
и так далее
Доработка в Power query
 
Срочно!
Копирование данных с одного листа в другой, если соответсвует критериям, в определенные строки
 
Доброго дня! Существует основной листик, в котором нужно обновлять инфу из второго листика, если совпадают по криетриям.
Пример: в основном листе есть столбцы: Название продукта, год, канал, тип данных. Надо найти во втором листике это продукт, соответственно этому году и этому каналу. Скопировать именно в эту строку( именно в этот тип данных). Таких продуктов много. Вставлять нужно соответственно.
Макрос встроенный в файлы динамически созданных другим макросом
 
Есть файл. Макрос делит его на разные мелкие файлы. В этот макрос нужно дописать так чтобы в новых созданных им файлых был прописан макрос который запрещает сохранение файла если не заполнено динамическое поле.
Файл в приложении. задача на мой взгляд не титаническая.  
Страницы: 1
Наверх