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

Страницы: 1
доработка макроса (история изменения ячейки в соседней с ней)
 
Всем привет

нужна доработка макроса, чтобы он отвечал следующим критериям:
В ячейках в диапазоне F5:F150 указываются даты в формате dd.mm.yy hh:mm.
что нужно:
a) При изменении значения в любой из ячейке указанного диапазона требуется сохранять предыдущее значение (если оно было) в offset 0, 7 cell.
b) Если ячейка (строка) удаляется с рабочего листа, то всю историю изменений в offset 0,7 следует очищать.

Бюджет = 500 руб.

код из примеров, но сохраняет историю изменений в комментарии к ячейке и не обнуляет значение offset 0, 7 после удаления соответствующей ячейки из диапазона F5:F150 или строки, включающей в себя в этот диапазон.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim NewCellValue$, OldComment$
Dim cell As Range
    
    'если ячейка не в отслеживаемом диапазоне, то выходим
    If Intersect(Target, Range("F5:F150")) Is Nothing Then Exit Sub
    
    'перебираем все ячейки в измененной области
    For Each cell In Intersect(Target, Range("F5:F150"))
    
        If IsEmpty(cell) Then
            NewCellValue = "Ячейка очищена" 'фиксируем очистку ячейки
        Else
            NewCellValue = Format(cell, "dd.mm.yyyy hh:mm")     'или ее содержимое
        End If
        On Error Resume Next
        
        With cell.Offset(rowOffset:=0, columnOffset:=7)


            OldComment = .Comment.Text & Chr(10)
            .Comment.Delete     'удаляем старое примечание (если было)
            .AddComment         'добавляем новое и вводим в него текст
            .Comment.Text Text:=OldComment & Application.UserName & " " & _
                            Format(Now, "dd.mm.yyyy hh:mm") & " : " & NewCellValue
            .Comment.Shape.TextFrame.AutoSize = True    'делаем автоподбор размера
            .Comment.Shape.TextFrame.Characters.Font.Size = 8
        End With
    Next cell
    
End Sub
Изменено: Astroid1 - 14.07.2016 10:01:53
Использование функции переноса данных с одного листа на другой (VBA) в shared workbook, Перенос строки на другой лист с последующим удалением с листа-донора
 
Коллеги, добрый вечер

Возможно тема поднималась ранее (не смог найти, к своему сожалению), но попробую спросить:
существуют ли какие-нибудь ограничения на макрокоманды в книгах с общим доступом?

При выполнении данного кода в книге - происходит корректный перенос (копирование с листа "info_list" на "лист1" выделенного в Listbox1 диапазона).
Однако, как только книга приобретает статус расшаренной для общего доступа, при выборе последнего в списке listbox1 значения происходит ошибка и на лист1 переносятся все записи (и выбранные и не выбранные, включая заголовки из листа "info_list").

Объявление переменных, к сожалению не помогло.
Прошу вашей помощи.
Код
Private Sub CommandButton2_Click()
    Dim i As Long
    
    With ListBox1

    For i = Me.ListBox1.ListCount - 1 To 0 Step -1
        If Me.ListBox1.Selected(i) Then
           j = j + 1
            Sheets("Info_list").Range("A" & i + 2).Resize(1, 7).Copy Sheets("Лист1").Range("A" & Rows.Count).End(xlUp).Offset(1)
            Sheets("Info_list").Range("A" & i + 2).Resize(1, 7).Delete
        End If
   Next i
    
    LoadListBox
    
      MsgBox "'OK'", vbInformation
End With
End Sub
Изменено: Astroid1 - 09.03.2016 22:57:42
Вызов функции "обновить файл" через VBA-код, Процедура / команда эквивалентная нажатию на кнопку "Обновить файл" при работе с книгой общего пользования
 
Добрый вечер, уважаемые коллеги

Прошу Вашей помощи в вопросе вызова команды эквивалентной той, что запускается по нажатию на кнопку "Обновить файл" при работе в книге с открытым общим доступом.
Суть использования: избежать перезаписывания данных через UserForm в одинаковый диапазон рабочего листа со стороны нескольких пользователей, в один момент времени.

P.S. Конечно, соглашусь с Вами, что excel для таких вещей, как замена access и sql-server - не годен, однако, жизнь заставила...
Изменено: Astroid1 - 09.03.2016 01:02:28
Управление информацией с рабочего листа через Listbox Userform, присваивать выбранной в listbox userform записи пользовательские параметры
 
Уважаемые коллеги,

Прошу оказать помощь с настройкой функционала по управлению данными рабочего листа через userform.

На листе существуют записи о входящих запросах. Требуется помощь с программированием кнопки Commandbutton2, чтобы по её нажатию соответствующей (выбранной в листбокс1) записи присваивался записи в столбце "Текущий статус" (D) "Исполнено".

Код на удаление (для модификации под вышеописанный вопрос)
Код
Private Sub CommandButton2_Click()
    Dim i As Long, DelData As String, k As String, k1 As Long, DelStr As String, iLastRow As Long, iLastCol As Long
  Dim delRange As Range

    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) Then
            DelStr = DelStr & ListBox1.List(i, 0) & vbCrLf
            If delRange Is Nothing Then
              Set delRange = listBoxRange.Rows(i + 1)
            Else
              Set delRange = Union(delRange, listBoxRange.Rows(i + 1))
            End If
        End If

    Next i

delRange.EntireRow.Delete
UserForm_Initialize
    MsgBox "Запрос успешно обработан - " & vbLf & DelStr, vbInformation

End Sub
Отправка сообщений Outlook только уникальным адресатам из диапазона
 
Здравствуйте

Существует всем известный код, но имеет один недостаток: при наличии повторяющихся значений в диапазоне B:B - все они будут переданы в объектную переменную .EmailAddr и, соответственно в строке получателей письма получится обширное загромождение одинаковых (при множестве дубликатов из диапазона B:B) значений.

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

Спасибо, заранее, за помощь
Код
Sub SendEmail()
  'Uses late binding
  Dim OutlookApp As Object
  Dim MItem As Object
  Dim cell As Range
  Dim Subj As String
  Dim EmailAddr As String
  Dim Recipient As String
  Dim Bonus As String
  Dim Msg As String
  
  'Create Outlook object
  Set OutlookApp = CreateObject("Outlook.Application")
  
  
  'Loop through the rows
  For Each cell In Columns("B").Cells.SpecialCells(xlCellTypeConstants)
    If cell.Value Like "*@*" Then
      'Get the data
      Subj = "Your Annual Bonus"
      Recipient = cell.Offset(0, -1).Value
      EmailAddr = cell.Value
      Bonus = Format(cell.Offset(0, 1).Value, "$0,000.")
            
     'Compose message
      Msg = "Dear " & Recipient & vbCrLf & vbCrLf
      Msg = Msg & "I am pleased to inform you that your annual bonus is "
      Msg = Msg & Bonus & vbCrLf & vbCrLf
      Msg = Msg & "William Rose" & vbCrLf
      Msg = Msg & "President"
    
      'Create Mail Item and send it
      Set MItem = OutlookApp.CreateItem(0) 'olMailItem
      With MItem
        .To = EmailAddr
        .Subject = Subj
        .Body = Msg
        '.Send
        .Save 'to Drafts folder
      End With
    End If
  Next
  Set OutlookApp = Nothing
End Sub

Изменено: Astroid1 - 29.02.2016 23:32:49
как присвоить переменной динамический диапазон с рабочего листа?
 
Коллеги, всем привет
Как присвоить переменной "sTO (адрес получателей письма) динамический диапазон?

Ниже код
Код
Option Explicit
 
Sub Send_Mail()
    Dim objOutlookApp As Object, objMail As Object
    Dim sTo As String, sSubject As String, sBody As String, sAttachment As String
 
    Application.ScreenUpdating = False
    On Error Resume Next
    Set objOutlookApp = CreateObject("Outlook.Application")
    objOutlookApp.Session.Logon
    Set objMail = objOutlookApp.CreateItem(0)   'создаем новое сообщение
    'если не получилось создать приложение или экземпляр сообщения - выходим
    If Err.Number <> 0 Then Set objOutlookApp = Nothing: Set objMail = Nothing: Exit Sub
 
    sTo = "AddressTo@mail.ru"    'Кому(можно заменить значением из ячейки - sTo = Range("A1").Value)
    sSubject = "Автоотправка"    'Тема письма(можно заменить значением из ячейки - sSubject = Range("A2").Value)
    sBody = "Привет от Excel-VBA"    'Текст письма(можно заменить значением из ячейки - sBody = Range("A3").Value)
    sAttachment = "C:/Temp/Книга1.xls"    'Вложение(полный путь к файлу. Можно заменить значением из ячейки - sAttachment = Range("A4").Value)
    
    'создаем сообщение
    With objMail
        .To = sTo 'адрес получателя
        .Subject = sSubject 'тема сообщения
        .Body = sBody 'текст сообщения
        .Attachments.Add sAttachment
        .Send 'Display, если необходимо просмотреть сообщение, а не отправлять без просмотра
    End With
exit_:
    Set objOutlookApp = Nothing: Set objMail = Nothing
    Application.ScreenUpdating = True
End Sub
Изменено: Astroid1 - 26.01.2016 09:59:57
Создание crm mssql + web клиент
 
Коллеги,
Имеется компания в которой существует отдел А и подразделения Б, В, Г, Д

Отдел А осуществляет обработку запросов, направляемых со стороны вышеуказанных подразделений.
Все взаимодействие осуществляется через outlook.

Раз в день один из сотрудников заносит в таблицу информацию по направленным запросам (подразделение инициатор, время, тип запроса и соответственно время ответа на данный запрос со стороны сотрудника отдела А).
Мы хотим чтобы данные подтягивались без участия сотрудника, заносящего данные вручную в такую таблицу.
Это реально организовать?
В какой срок и стоимость выйдет такая работа?
Возможно в связке outlook + excel - без разницы, но знающие люди говорят, что это должен быть mssql + какой-нибудь клиент.
Электронный документооборот Outlook + excel
 
Коллеги, добрый день

Требуется решать следующую задачу:
В компании необходимо внедрить систему электронного документооборота (иметь возможность выгружать сообщения из outlook в excel в нужном формате для дальнейшего построения управленческой отчётности).
Пример: поступает заказ на почтовый ящик (группа), исполнитель обрабатывает заказ и отвечает на группу о готовности. Далее, эти данные прогружаются автоматически, в готовый для построения сводных таблиц формат и данные тянутся в дешборд.
В принципе это реализовано за тем лишь исключением, что отсутствует макрос, понимающий что определённый ответ относится к определённому запросу, направленному ранее на почтовую группу и возможность формировать готовые данные для сводных таблиц.

Это реально в связке excel + outlook или лучше сразу делать под mssql + веб-клиент?
Создание hyperlink с помощью формы пользователя VBA
 
Здравствуйте

Прошу оказать содействие в следующем вопросе
Имеется форма пользователя, на которой устанавливается имя, дата, город
Требуется добавить возможность формирования гиперссылки во время заполнения вышеописанных данных и, после нажатия кнопки "внести запись", подобные данные переносились на рабочий лист Excel.

Во всех тонкостях кода разобрался, кроме генерации гиперссылки и последующим размещением её на рабочий лист после нажатия условной кнопки "внести запись".
Код
Private Sub CommandButton16_Click()    Dim wb As Workbook
Application.Dialogs(xlDialogInsertHyperlink).Show

По сути вопроса: как сделать привязку гиперссылки к конкретному диапазону +1?
Консультации по обработке данных, сличение двух диапазонов / поиск и сравнение в массиве
 
Доброго здоровьеца.

Мне нужен человек с глубоким пониманием excel и принципов работы с данными.

В идеале разобрать кейс по сличению двух массивов данных (понять, какие данные содержаться в одном диапазоне, а каких нет). Вопросы по powerpivot
Думаю, пару часов на это дело хватит.
Цена договорная.
,
Изменено: Astroid1 - 24.01.2015 17:36:28
Группировка подмножеств в сводных таблицах, группировка в сводных таблицах
 
Доброго здоровьеца, коллеги

Ознакомился с темой, представленной на сайте:
http://www.planetaexcel.ru/techniques/8/131/
И возник вопрос: каким образом сгруппировать подмножества из списка "Сыры" в соседний столбец (как это показано на прилагаемом скриншоте)?


Вот то, что получилось у меня...
Изменено: bombik - 21.12.2014 23:22:36
Сравнение двух массивов данных
 
Доброго здоровьеца, коллеги!
Прошу оказать содействие в избитом вопросе сравнения двух диапазонов данных.
Имеется два массива данных:
Массив номер один: А1:B150
A1:A150 - записи формата: номера телефонов 8(956)-ххх-хх-хх
B1:B150 - названия контор: ООО Рога и Копыта / ИП Выхлуев и т.д.

Второй массив содержит больше записей (строк), однако нам известно, что записи из массива номер один - точно содержатся в массиве номер два, плюс, надо убедиться, что они не перепутаны относительно массива номер один (т.е. записи соответствуют массиву номер один, либо-же не соответствуют).

Принял в работу всеми любимую функцию ВПР.
Цепляю номер телефона (искомый элемент) из массива номер один, и начинаю поиск по второму столбцу второго массива. А в ответ #Н/Д...

Поиск по форуму натолкнул на несколько мыслей
=ИНДЕКС(Таблица1[июл.12];ПОИСКПОЗ("8(956)-ххх-хх-хх";Таблица2[Статья];0))
Вот, как нибудь, с помощью данной формулы попробовать заменить впр?
Не работают объекты Active-X, ошибка
 
Добрый вечер, коллеги

Столкнулся сегодня со следующей проблемой:
При попытке запустить форму через внедренную на рабочий лист commandbutton - событие не происходит (т.е. нельзя нажать кнопку). Аналогично, при попытке вставить другой элемент active-x - выдает сообщение с текстом: "Вставка объекта неосуществима",

Переустановка MS Office, с чисткой реестра не приносят положительных результатов. Вчера переустанавливал систему по этой причине. Подозреваю, что виноваты обновления (Винда 7 - домашняя базовая - лицензия, Офис для дома и учебы 2010 - лицензия).
Подозреваю, что дело в кривом обновлении. Ибо в настройках безопасности все отключено. Иных причин не усматриваю.

Очень прошу оказать содейтствие т.к. иных способов решения проблемы, как переустановкой винды не имею.
Спасибо
Страницы: 1
Наверх