Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 След.
Отправка письма из Excel посредством (SentKeys)
 
Ребята, всем привет

Нужна Ваша помощь, суть задачи следующая

Есть Excel файл, при открытии которого запускается макрос, отправляющий письмо из Outlook

Реализовал отправку письма, при помощи нажатия SentKeys, потому как при обычной отправке появляется сообщение с защитой от массовой рассылки



Отключить данную опцию в настройках Outlook не могу, т.к. это терминальный компьютер, в котором админы заблокировали отключение данной опции

Ошибок и трудностей при формировании письма нет. Но есть огромная проблема при его отправке. Письмо в Outlook создается, но не отправляется и я даже понял почему, потому что в момент выполнения SentKeys, окно Outlook не активно, стоит его активировать вручную курсором, письмо без проблем отправляется

Может кто подскажет как мне сделать окно Outlook активным в момент нажатия SentKeys ?  
Изменено: pinguindell - 19 окт 2020 13:02:42
Автоматический запуск макроса при открытии книги (с условием бездействия пользователя определенное время)
 
Добрый вечер, уважаемые форумчане

Думаю над одной задачкой, но никак не могу додумать, помогите пожалуйста.

Необходимо чтобы при открытии книги появлялось окно msgbox, в котором есть две кнопки Да и Отмена

Если нажимаешь Да, то запускается макрос (Macro1)
Если нажимаешь Отмена, то макрос (Macro1) не запускается

Но как нужно модифицировать код, так чтобы, если в течение 5 секунд после открытия книги и бездействия пользователя (т.е. не нажата ни одна кнопка в msgbox), окно msgbox закрывалось, а сам макрос (Macro1) был запущен ?

В качестве начального решения использовал следующий код, но он почему-то не закрывает автоматически окно MsgBox и не запускает макрос,
Код
Private Sub Workbook_Open()

Dim msg As String, runcode As Long

msg = "Нажмите Отмена для отмены запуска макроса, в противном случае макрос будет запущен в течение 5 сек.!"

runcode = CreateObject("Wscript.Shell").Popup(msg, 5, "Выберите действия:", vbOKCancel)

If runcode = 2 Then End

Call Macro1

End Sub
и
Код
Sub Macro1()
MsgBox "макрос"
End Sub
Запуск макроса при пересчете формулы я ячейке диапазона
 
Добрый день уважаемые форумчане, прошу Вашей помощи, туплю

Есть столбец В и С в которые вносятся значения.
В столбце А прописана формула, которая выполняет суммирование значений из ячеек в столбцах В и С, только при условии что в ячейках содержаться числа.

Необходимо чтобы при пересчете формулы в ячейке, столбца А, автоматически (макросом) проставлялась текущая дата и время в ячейку столбца D, в той строке, которой сработал пересчет формулы (при этом если дата уже есть в столбце D, ее нужно затереть на текущую)

Написал макрос, но он почему то при пересчете одной формулы, проставляет одинаковую дату на весь заданный диапазон А3:А100
Код
Private Sub Worksheet_Calculate()

Dim target As Range
Dim Cell As Variant
Set target = Range("A3:A100")

For Each Cell In target.Cells
If Not Intersect(Cell, Range("A3:A100")) Is Nothing Then
    
     Cell.Offset(0, 3).Value = Now
    End If
Next Cell

End Sub
Размещение файла с надстройкой на сетевом (локальном) диске
 
Добрый день, уважаемые форумчане

Следующая ситуация. Создал надстройку для пользователей, но периодически ее приходится обновлять, физически добираясь до компьютера пользователей (всего 3 компьютера) и заменять файл с надстройкой на актуальный

Хочу попробовать вариант, размещения файла с надстройкой на общем диске (локальный диск компании), чтобы можно было заменять сам файл с надстройкой без необходимости физического посещения кабинета этих сотрудников. Предполагается, что надстройкой будут пользоваться 3 сотрудника

Вопрос, снизится ли скорость работы надстройки, при таком размещении, можно ли будет используя один файл, подключить надстройку на трех отдельных компьютерах и какие ограничения такого способа обновления надстройки меня ждут ?
Изменено: pinguindell - 3 сен 2019 11:27:45
Добавить перехват ошибок в формулу, написанную в макросе
 
Добрый день уважаемые форумчане,

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

Есть исходная формула на VBA :
Код
iLastRow = Cells(Rows.Count, 4).End(xlUp).Row
Range("K3").Formula = "=СУММЦВЕТ(K15:K" & iLastRow & "," & "I3" & ")"  

необходимо ее немного модифицировать и добавить перехват ошибок, чтобы получилось следующее

Код
Range("K3").Formula = "=IFERROR(IF(R[11]C="""","""",СУММЦВЕТ(R[12]C:R[94]C,RC[-2])),"""")"

Но никак не могу понять, где нужно поставить амперсант и кавычки

Изменил ее следующим образом
Код
Range("K3").Formula = "=IFERROR(IF(R[11]C="""","""",СУММЦВЕТ(K15:K" & iLastRow & "," & "I3" & ")),"""")"

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

В интернете нашел статью https://www.thespreadsheetguru.com/the-code-vault/vba-add-recent-colors-to-palette
но это как мне кажется не совсем то что нужно

Может кто-то задавался уже подобным вопросом ?

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

обращаюсь к Вам за очередным советом и помощью
Знаю, что подобное решение уже где-то всплывало, поиском по Форуму воспользовался, но не нашел ничего подходящего

Суть задачи. Есть Userform, в которой есть кнопка "Старт макроса", как сделать так, чтобы при отображении формы, в кнопке "Старт макроса" отображались секунды обратного отсчета, по истечении которых, автоматически запускался бы макрос Text, который повешен на данную кнопку, если же пользователь нажимает кнопку до истечения таймера, то запускался бы все тот же макрос Text

Буду признателен за помощь
Изменено: pinguindell - 19 авг 2019 15:24:18
Закончить автоматический пересчет формул и последующее выполнение кода макроса
 
Добрый день уважаемые форумчане, есть код, который прописывает в таблице формулы
Код
Dim cell_overdue As Object
Dim ñLastRow_overdue As Long
Dim clearLastRow_overdue As Long

clearLastRow_overdue = 2

For Each cell_overdue In ActiveSheet.Range("1:1").Cells
If cell_overdue.Value = "" Then Exit For
ñLastRow_overdue = ActiveSheet.Cells(Rows.Count, cell_overdue.Column).End(xlUp).Row
 If ñLastRow_overdue > clearLastRow_overdue Then clearLastRow_overdue = ñLastRow_overdue
Next cell_overdue

If clearLastRow_overdue > 1 Then

'блок формул 1

ActiveSheet.Range(Cells(2, 23), Cells(clearLastRow_overdue, 23)).FormulaR1C1 = _
        "=IF(AND(""Q1 Ìàð""=[@[Date.Q]],COUNTIFS(R1C10:RC[-13],RC[-13])=1),MAXIFS([Date.D],[Date.M-Y],[@[Date.M-Y]]),IF(AND(""Q2 Èþí""=[@[Date.Q]],COUNTIFS(R1C10:RC[-13],RC[-13])=1),MAXIFS([Date.D],[Date.M-Y],[@[Date.M-Y]]),IF(AND(""Q3 Ñåí""=[@[Date.Q]],COUNTIFS(R1C10:RC[-13],RC[-13])=1),MAXIFS([Date.D],[Date.M-Y],[@[Date.M-Y]]),IF(AND(""Q4 Äåê""=[@[Date.Q]],COUNTIFS(R1C10:R" & _
        "C[-13],RC[-13])=1),MAXIFS([Date.D],[Date.M-Y],[@[Date.M-Y]]),IF(AND(""Q1 Ôåâ""=[@[Date.Q]],COUNTIFS(R1C10:RC[-13],RC[-13])=1),MAXIFS([Date.D],[Date.M-Y],[@[Date.M-Y]]),IF(AND(""Q2 Ìàé""=[@[Date.Q]],COUNTIFS(R1C10:RC[-13],RC[-13])=1),MAXIFS([Date.D],[Date.M-Y],[@[Date.M-Y]]),IF(AND(""Q3 Àâã""=[@[Date.Q]],COUNTIFS(R1C10:RC[-13],RC[-13])=1),MAXIFS([Date.D],[Date.M-Y],[" & _
        "@[Date.M-Y]]),IF(AND(""Q4 Íîÿ""=[@[Date.Q]],COUNTIFS(R1C10:RC[-13],RC[-13])=1),MAXIFS([Date.D],[Date.M-Y],[@[Date.M-Y]]),IF(AND(""Q1 ßíâ""=[@[Date.Q]],COUNTIFS(R1C10:RC[-13],RC[-13])=1),MAXIFS([Date.D],[Date.M-Y],[@[Date.M-Y]]),IF(AND(""Q2 Àïð""=[@[Date.Q]],COUNTIFS(R1C10:RC[-13],RC[-13])=1),MAXIFS([Date.D],[Date.M-Y],[@[Date.M-Y]]),IF(AND(""Q3 Èþë""=[@[Date.Q]],COU" & _
        "NTIFS(R1C10:RC[-13],RC[-13])=1),MAXIFS([Date.D],[Date.M-Y],[@[Date.M-Y]]),IF(AND(""Q4 Îêò""=[@[Date.Q]],COUNTIFS(R1C10:RC[-13],RC[-13])=1),MAXIFS([Date.D],[Date.M-Y],[@[Date.M-Y]]),""""))))))))))))" & _
        ""

ActiveSheet.Range(Cells(2, 24), Cells(clearLastRow_overdue, 24)).FormulaR1C1 = "=CONCAT([@[Date.Q]],[@[Date.Y]])"
ActiveSheet.Range(Cells(2, 25), Cells(clearLastRow_overdue, 25)).FormulaR1C1 = "=LEFT([@[Date.Q]],2)&[@[Date.Y]]"
ActiveSheet.Range(Cells(2, 26), Cells(clearLastRow_overdue, 26)).FormulaR1C1 = "=MAXIFS([Date for MTD AR],[System_2],[@[System_2]])"
ActiveSheet.Range(Cells(2, 27), Cells(clearLastRow_overdue, 27)).FormulaR1C1 = "=IF(AND([@[System_3]]>0,COUNTIFS(R1C26:RC[-1],RC[-1])=1),SUMIFS([Ñóììà],[Date.D],[@[System_3]]),"""")"
ActiveSheet.Range(Cells(2, 28), Cells(clearLastRow_overdue, 28)).FormulaR1C1 = "=IF([@[Sum AR overdue_pivot]]<>"""",LEFT([@[System_1]],2),"""")"
ActiveSheet.Range(Cells(2, 29), Cells(clearLastRow_overdue, 29)).FormulaR1C1 = "=IF([@[Sum AR overdue_pivot]]<>"""",[@[Date.Y]],"""")"
ActiveSheet.Range(Cells(2, 30), Cells(clearLastRow_overdue, 30)).FormulaR1C1 = "=IF([@[Year_pivot]]<>"""",""ok"","""")"
ActiveSheet.Range(Cells(2, 31), Cells(clearLastRow_overdue, 31)).FormulaR1C1 = "=IF([@Flag]=""ok"",IFERROR(IF(SUMIFS(Total[Ñàëüäî íà êîíåö ïåðèîäà],Total[Date.D],[@[System_3]])=0,"""",SUMIFS(Total[Ñàëüäî íà êîíåö ïåðèîäà],Total[Date.D],[@[System_3]])),""""),"""")"

'блок формул 2

ActiveSheet.Range(Cells(2, 32), Cells(clearLastRow_overdue, 32)).FormulaR1C1 = "=CONCATENATE([@Date]&""_""&[@Çàêàç÷èê]&""_""&[@Ïîëó÷àòåëü]&""_""&[@[Ñïðàâ.¹]]&""_""&""_""&[@[System_'#]]&""_""&[@Ñóììà])"
ActiveSheet.Range(Cells(2, 33), Cells(clearLastRow_overdue, 33)).FormulaR1C1 = "=IF(LEN(CONCATENATE([@Çàêàç÷èê]&""_""&[@Ïîëó÷àòåëü]&""_""&[@[Ñïðàâ.¹]]&""_""&[@Ñóììà]&""_""&[@[Date.W]]))>255,CONCATENATE([@Çàêàç÷èê]&""_""&[@Ïîëó÷àòåëü]&""_""&[@Äîêóìåíò]&""_""&[@Ñóììà]&""_""&[@[Date.W]]),CONCATENATE([@Çàêàç÷èê]&""_""&[@Ïîëó÷àòåëü]&""_""&[@[Ñïðàâ.¹]]&""_""&[@Ñóììà]&""_""&[@[Date.W]]))"
ActiveSheet.Range(Cells(2, 34), Cells(clearLastRow_overdue, 34)).FormulaR1C1 = "=IF(LEN([@Çàêàç÷èê]&""_""&[@Ïîëó÷àòåëü]&""_""&[@[Ñïðàâ.¹]]&""_""&[@Ñóììà])>255,[@Çàêàç÷èê]&""_""&[@Ïîëó÷àòåëü]&""_""&[@Äîêóìåíò]&""_""&[@Ñóììà],[@Çàêàç÷èê]&""_""&[@Ïîëó÷àòåëü]&""_""&[@[Ñïðàâ.¹]]&""_""&[@Ñóììà])"
ActiveSheet.Range(Cells(2, 35), Cells(clearLastRow_overdue, 35)).FormulaR1C1 = "=COUNTIF(R1C33:RC[-2],RC[-2])"
ActiveSheet.Range(Cells(2, 36), Cells(clearLastRow_overdue, 36)).FormulaR1C1 = "=IF(AND([@[System_Ïîâòîðû]]=1,SUMIFS([System_Ïîâòîðû],[System_Êëþ÷_êîë-âî ïîâòîðîâ äàò â ðàìêàõ íåäåëè],RC[-3])>1),""blanks"","""")"
ActiveSheet.Range(Cells(2, 37), Cells(clearLastRow_overdue, 37)).FormulaR1C1 = "=COUNTIF(R1C34:RC[-3],RC[-3])"
ActiveSheet.Range(Cells(2, 38), Cells(clearLastRow_overdue, 38)).FormulaR1C1 = "=COUNTIFS([System_Êëþ÷_êîë-âî ïîâòîðîâ äàò â ðàìêàõ íåäåëè],RC[-5])"
ActiveSheet.Range(Cells(2, 39), Cells(clearLastRow_overdue, 39)).FormulaR1C1 = "=IF(AND([@[System_'#]]=1,[@[System_Îáùåå ÷èñëî ïîâòîðîâ]]=1),1,IF([@[System_Blanks]]<>""blanks"",MAXIFS(R1C39:R[-1]C,R1C34:R[-1]C[-5],RC[-5])+1,""""))"
ActiveSheet.Range(Cells(2, 40), Cells(clearLastRow_overdue, 40)).FormulaR1C1 = "=IFERROR(IF(IF([@[System_ñëó÷àé ïðîñðî÷êè]]=1,0,7*[@[System_ñëó÷àé ïðîñðî÷êè]])-7<0,IF([@[System_ñëó÷àé ïðîñðî÷êè]]=1,0,7*[@[System_ñëó÷àé ïðîñðî÷êè]])-7+7,IF([@[System_ñëó÷àé ïðîñðî÷êè]]=1,0,7*[@[System_ñëó÷àé ïðîñðî÷êè]])-7),"""")"


End If

затем происходит конвертация данных формул в значения

Код
Range("Overdue[[Date for MTD AR]:[Êîëè÷åñòâî äíåé ïðîñðî÷êè]]").Select

Dim smallrng_overdue As Range
    
For Each smallrng_overdue In Selection.Areas
    smallrng_overdue.Value = smallrng_overdue.Value
Next smallrng_overdue

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

пробовал использовать конструкцию

Код
''If Not Application.CalculationState = xlDone Then
''DoEvents
''End If

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

Подскажите пожалуйста, как можно решить выполнение до конца всего пересчета и последующую конвертацию в значения

TextToColumns при преобразовании данных задает вопрос о замене
 
Добрый день уважаемые форумчане,

написал следующий макрос, который преобразовывает данные из 1С в числовой формат, но при использовании метода TextToColums, он почему то требует замены, при этом разбивая цифры на отдельные столбцы.

Может кто уже сталкивался с таким и как обойти эту проблему ? Проблему не в плане появления запроса, а в плане, чтобы числа преобразовывались в числа без разделения на части
Изменено: pinguindell - 6 июн 2019 11:28:55
Транспонирование строк из вертикального массива в горизонтальный
 
Добрый день уважаемые форумчане, в очередной раз требуется Ваша помощь в написании макроса

Есть выгрузка из 1С
Исходные данные на листе AS IS (количество строк может быть больше / меньше, чем указано в примере), то что должно получиться на листе TO BE

Необходимо данные в столбце С транспонировать в строку, сложность заключается в том, что количество строк в столбце С для определенной группы может варьироваться от 4 до 6. После транспонирования, транспонированные строки необходимо удалить, а также столбец С в котором находились транспонированные данные

Буду очень признателен за помощь
Изменено: pinguindell - 4 июн 2019 14:22:31
Формула расчета уникальных значений по порядку (Power Pivot)
 
Добрый день уважаемые форумчане

Есть табличка с датами, которые добавляются в модель Power Pivot
Date
09.01.2018
09.01.2018
09.01.2018
09.01.2018
15.01.2018
21.01.2018
21.01.2018
21.01.2018
29.01.2018
29.01.2018
необходимо посчитать уникальные значения дат, пронумеровав их в порядке возрастания 1, 2, 3 и т.д.
DateCount
09.01.20181
09.01.20181
09.01.20181
09.01.20181
15.01.20182
21.01.20183
21.01.20183
21.01.20183
29.01.20184
29.01.20184
перебрал кучу формул, но пока результат нулевой. Буду признателен за помощь
Изменено: pinguindell - 24 май 2019 14:14:19
Условное форматирование в сводной таблице
 
Доброго времени суток уважаемые форумчане,

недавно получил от своего босса, задачку, которая сломала мне всю голову

Есть смарт таблица, на основе которой строится сводная таблица (пример во вложении)

Как настроить условное форматирование / стиль сводной таблицы в сводной таблице, и можно ли вообще это сделать, так как показано в файле и на скрине ниже :



P.S. босс утверждает что он так уже делал, правда молчит и не сознается. Я не совсем дуб в Excel, но такого ни разу не видел, если кто-то уже сталкивался с подобной задачей просьба помочь
Изменено: pinguindell - 23 май 2019 17:03:25
Выбор в фильтре даты перед максимальной
 
Уважаемые форумчане, добрый день

Нужна Ваша помощь. Обыскал весь форум и просмотрел множество результатов в google поиске на забугорных сайтах, но понял, что проблема с которой я столкнулся, уникальная в какой то мере, может конечно не все просмотрел, но однозначного решения не нашел

Задача заключается в следующем. Необходим макрос, который фильтровал бы столбец А в smart-table по следующей логике.

Столбец А - содержит даты, необходимо чтобы макрос отфильтровал столбец А по предыдущей дате перед максимальной. В моем примере, макс дата - 31.03.19, а предыдущая дата перед максимальной 22.03.19, соответственно макрос должен отфильтровать только строки с датой 22.03.19

Четкой разницы между макс и предыдущей датой нет, это может быть и один день и 7 дней

Буду признателен за помощь
Преобразование выгрузки из 1С при помощи макроса
 
Уважаемые знатоки VBA, доброго времени суток
В очередной раз требуется Ваша помощь в реализации одной автоматизации с помощью макроса
Есть выгрузка из 1С, которую необходимо обработать при помощи макроса

1 В таблице есть столбцы с суммами на определенную дату. удалить столбцы с суммами, которые не относятся к текущей дате.
Например, сегодня 21.01.19, соответственно в таблице есть такие столбцы как

Сумма на 09.01.19,
Сумма на 14.01.19,
Сумма на 21.01.19.

Необходимо удалить, а столбец Сумма на 21.01.19. оставить

2 Добавить перед столбцом А два новых столбца

3 Новый столбец А - назвать Заказчик, новый столбец В - назвать Получатель

4 В таблице для каждого заказа есть два варианта : либо две строки последовательно (Заказчик - Получатель) - например, Рога и копыта и КЛТ, либо одна строка и несколько получателей (Кронос - получатель кронос 1, получатель кронос 2, получатель кронос 3, получатель кронос 4, получатель кронос 5, получатель кронос 6, получатель кронос 7, получатель кронос).

Необходимо в столбец А добавить название Заказчика, в столбец В - название Получателя и так для всех заказов в рамках конкретного поставщика и заказчика

В файле для понимания того что есть и что должно получиться после работы макроса, добавил два листа Исходник (выгрузка из 1С) и лист Результат (конечный результат)

Послед добавления названий Заказчика и Получателя, строку необходимо удалить (в моем примере необходимо удалить строки 2,3,6,7,9,16,18,20,22,24,27,38

5 Строку Итого удалить из таблицы

Количество строк в таблице всегда разное
Буду очень признателен за Вашу помощь
Изменено: pinguindell - 23 янв 2019 13:06:58
Поиск значения в зависимости от даты
 
Добрый день уважаемые форумчане

Просьба помочь в решении одной, как мне кажется простой, задачки

Есть лист Реестр, на нем таблица, в которую вносятся заказы по определенному поставщику
На листе Поставщики, таблица с названием поставщиков, датами начала и окончания контракта, а также номером контракта

При поступлении нового заказа, на лист Реестр забивается дата заказа и из выпадающего списка выбирается поставщик.
Как на основе даты заказа подтягивать на лист Реестр номер контракта поставщика, который используется в рамках данного периода ?

К примеру если заявка для поставщика ООО "Рога и копыта" была сделана 10.06.2018, то подтянуть номер контракта 10005555322 (который действует с 01.06.2018   по 30.09.2018)

Спасибо за помощь
Изменение порядка столбцов в умной таблице (VBA)
 
Добрый день, уважаемые знатоки VBA

Обращаюсь в очередной раз за помощью в решении одной задачки
Есть умная таблица с определенной последовтельностью столбцов:
А) Дата    
В) Наименование    
С) Клиент    
D) Статус

Возможно ли при помощи VBA сделать так, чтобы при нажатии кнопки столбцы менялись местами, к примеру чтобы последовательность столбцов была :
A) Клиент    
B) Дата
C) Наименование    
D) Статус

Заранее спасибо
Сортировка данных основанная на пользовательском списке (VBA)
 
Добрый день уважаемые форумчане, просьба в очередной раз помочь с одной задачкой

Есть лист данные, на котором представлен диапазон с кодами, который нужно отсортировать согласно заданного списка, представлен на листе список для сортировки

Как автоматизировать процесс сортировки данного диапазона при помощи VBA основанного на последовательности элементов, которая указана на листе список для сортировки? С учетом того что диапазон кодов на листе данные, не имеет определенных границ и постоянно меняется (строк может быть 100, а может быть 300)
Изменено: pinguindell - 17 дек 2017 09:28:48
Передача значений выделенного диапазона в переменную
 
Добрый день уважаемые форумчане,

в очередной раз требуется помощь профессионалов VBA

На листе есть столбец с данными (столбец А), которые периодически фильтруются по определенному критерию. Отфильтрованных значений каждый раз может быть разное количество, минимум 1 - максимум 20

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

Код макроса следующий :
Код
Sub SelectData()
Dim vData As Variant

vData = Selection.SpecialCells(xlCellTypeVisible).Value
MsgBox (vData)
End Sub
проблема в том, что если выделенных значений большей чем 1, макрос выводит только первое значение, а нужно чтобы он выводил все выделенные значения из диапазона и желательно через запятую
Изменено: pinguindell - 14 окт 2017 13:35:33
Преобразование текста в гиперссылку при помощи макроса
 
Добрый день Уважаемые форумчане

Есть таблица в которую вносится описание - столбец В. Описание это обычно текст, но бывает, что пользователи указывают адреса папок/файлов в виде текста (при этом не добавляют гиперссылку). Такие адреса нужно затем преобразовать в нормальную гиперссылку, кликнув по которой можно было переходить к определенному файлу / папке.

Напсал макрос для преобразования значений в столбце В из текста в гиперссылку. Но макрос преобразовывает в гиперссылку все значения без исключения,а нужно чтобы он игнорировал обычный текст и преобразовывал только гиперссылки
Код
Sub TransformToHyperLink()

Range("Таблица1[Описание]").Select

For Each xCell In Selection
ActiveSheet.Hyperlinks.Add Anchor:=xCell, Address:=xCell.Formula
Next xCell

End Sub

Подскажите как можно обойти данное ограничение ?
Изменено: pinguindell - 25 сен 2017 10:56:42
Фильтрация длинных чисел в текстовом формате при помощи макроса
 
Добрый день, уважаемые форумчане

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

Написал небольшой код, который фильтрует таблицу по столбцу В, исключая из фильтра значение последней записи. Но почему то макрос не фильтрует так как нужно ,исключая из фильтрации значение 30241000001388100
Код
Sub jgjgj()


On Error Resume Next
If ActiveSheet.AutoFilterMode Or ActiveSheet.FilterMode Then 
ActiveSheet.ShowAllData 
End If

ActiveSheet.ListObjects("table").Range.AutoFilter Field:=1, Criteria1:="<> "
   
Range("B4").Select
Selection.End(xlDown).Select
ActiveCell.Select
      
Vf = ActiveCell.Value

ActiveSheet.ListObjects("table").Range.AutoFilter Field:=1, Criteria1:="<>" & Vf

End Sub

Я думаю вся проблема в формате данных чисел
Подскажите как можно исправить данную ошибку
Изменено: pinguindell - 28 апр 2017 15:24:32
Извлечение даты из текстовой строки
 
Добрый день уважаемые форумчане!

В очередной раз требуется Ваша помощь.
Есть дата в ячейке А1 в формате Заказ поставщику № CO-257 от 25 ноября 2016 г.

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

Заранее спасибо
Изменено: pinguindell - 1 фев 2017 16:52:28
Поиск в диапазоне последней позиции значения
 
Добрый вечер уважаемые знатоки Excel требуется Ваша помощь

Есть таблица, в ней представлен список из повторяющихся значений (столбец В), а также столбец А в котором прописана формула, вычисляющая повторяемость значений которые находятся в столбце В.

В столбце С - необходимо прописать формулу, которая выводила бы в столбце С - значение "ок" для максимального значения в столбце А. К примеру для значения Орион максимальным числом повторения в столбце А является число 13 (строка 23), необходимо чтобы в столбце С в 23 строке было указано значение ок

Я понимаю что здесь необходима функция МАКСЕСЛИ, но в Excel такой формулы нет.

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

Есть задача - необходимо при нажатии на кнопку Печать на листе, чтобы макрос отправлял на печать pdf файлы, ссылки на которые размещены в столбце А.
Я написал макрос и все работает и печатает, но макрос открывает каждый файл по отдельности, что очень не удобно, особенно если файлов 20 и более.
Код
Sub SetupBtn()
    ActiveSheet.Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row).Select
    PrintHyperlinkedPDFs
 
End Sub


Sub PrintHyperlinkedPDFs()

Dim PDFrng As Range, PDF As Range
Dim AdobeReader As String, pdfLINK As String
                                        'there is an extra space at the end of this string
AdobeReader = "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe"
Set PDFrng = Selection                  'change this to whatever method you want for setting
                                        'the range of PDF link cells to process and print
For Each PDF In PDFrng
    If PDF.Hyperlinks.Count > 0 Then pdfLINK = PDF.Hyperlinks(1).Address
    Shell """" & AdobeReader & """/n /t """ & pdfLINK & """"
Next PDF

Selection.Cells(1).Select
End Sub

Есть ли возможность отправлять файлы на печать не открывая сами файлы в Adobe ?

Спасибо за ответы

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

Есть таблица, в которой представлены данные. Необходимо сделать следующее, если в таблице в столбце 8 в результате вычислений формулы, значение любой из ячеек в столбце 8 равно 0, то выполнялся запуск макроса Put_record, суть которого состоит в том, чтобы сделать отступ от ячейки в столбце 8, значение которой равно 0 на 2 столбца влево и выделить полученную ячейку.

Я написал следующий код, но почему то он не работает. Можете подсказать в чем причина ?
Код
Private Sub Worksheet_Calculate()

Dim Cell As Object
For Each Cell In Range("Таблица2[Столбец 8]")
If Cell = 0 Then

Application.Run("Put_record").Select

Else
End If
   
Next Cell
   
End Sub
Изменено: pinguindell - 17 июн 2016 08:20:15
Фильтр сводной таблицы на основе значения ячейки, в фильтре содержатся даты
 
Добрый день уважаемые знатоки Excel

Написал макрос который должен фильтровать фильтр сводной таблицы на основе даты из ячейки E4
Код
Sub FLTRDT()

ActiveSheet.PivotTables("freshnees_tbl").ClearAllFilters
    On Error Resume Next
    ActiveSheet.PivotTables("freshnees_tbl").PivotCache.Refresh


    On Error Resume Next
    Dim pf233 As PivotField
    On Error Resume Next
    Set pf233 = ActiveSheet.PivotTables("freshnees_tbl").PivotFields("Дата ИО")
    On Error Resume Next
   pf233.ClearAllFilters
    On Error Resume Next
pf233.CurrentPage = CDate(Range("E4").Value)

End Sub
но почему то ничего не получается и значению ячейки для фильтра установил CDate, но ничего не происходит. В чем может быть проблема ?
Изменено: pinguindell - 11 апр 2016 19:34:43
Вставка даты из календаря в ячейку
 
Добрый день, уважаемые знатоки Excel !

У меня очередная проблема, которая не дает мне двигаться дальше.
На листе есть smart table, повесил в код листа, событие на изменение данных в столбце SystemDate , по которому вызывается форма Календарь. Пользователь выбирает в этой форме дату и эта дата добавляется в столбец SystemDate.

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

Что нужно сделать чтобы дата отображалась как дата ?
Фильтрация дат с помощью макроса
 
Уважаемые знатоки VBA, добрый день.

Прошу подсказать, в чем проблема в моем макросе, который должен фильтровать даты в таблице (столбец С) на основе даты из ячейки H1.
Чувствую ,что проблема достаточно простая, но никак не могу понять в чем дело, т.к. использовал CDbl

Макрос фильтрует таблицу, но в фильтре вместо даты, отображается числовое значение, в результате таблица после фильтрации ничего не содержит
Код
Sub dd()

Dim R#
Application.ScreenUpdating = False
R = Cells(Rows.Count, 1).End(xlUp).Row

ActiveSheet.Range("$A$2:$C$" & R).AutoFilter Field:=3, Criteria1:="=" & CDbl([H1])
End Sub
Отключение таймера Now + TimeValue
 
Добрый день уважаемые знатоки VBA !

Написал макрос, который автоматически по истечении 10 минут с момента открытия книги, сохраняет в файле изменения и закрывает книгу.
Иногда необходимо определенным категориям сотрудников, работать в файле более 10 минут, соответственно нужно как-то остановить запущенный таймер. Для этого написал макрос, который останавливает запущенный таймер, но он выдает ошибку expected variable procedure not module подскажите пожалуйста в чем может заключаться ошибка ?
Код
Private Sub Workbook_Open()
Dim DateTime As Date
    DateTime = Now + TimeValue("00:10:00")
    Application.OnTime DateTime, "TimeOut"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim DateTime As Date
    On Error Resume Next
    Application.OnTime DateTime, "TimeOut", , False
End Sub

Private Sub TimeOut()
   ThisWorkbook.Close True
   ActiveWorkbook.Close True
End Sub

Private Sub TimerSTOP()
Application.OnTime EarliestTime:=DateTime, Procedure:="TimeOut", Schedule:=False
End Sub
Макрос проверки автофильтра на признак отфильтрованных данных
 
Добрый день, уважаемые знатоки VBA. В очередной раз обращаюсь к Вам за помощью.

На листе в ячейке А2 есть выпадающий список из которого выбирается определенное название товара.

После этого нажимается кнопка и макрос сначала фильтрует таблицу ниже по критерию указанному в ячейке А2. После этого происходит проверка, если в отфильтрованном диапазоне значений нет - макрос должен выдать сообщение "Данных нет", если же в диапазоне содержаться данные, то макрос должен выдать сообщение "ОК".

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

Помогите пожалуйста определить в чем может быть ошибка ?
Код
Sub pro()
 
'снимаем фильтры с таблицы
On Error Resume Next
ActiveSheet.ShowAllData
 LastRow = Cells(Rows.Count, 1).End(xlUp).Row
'фильтруем данные на листе Лист1 по значению из ячейки А2
Range("A5:A" & LastRow).AutoFilter Field:=1, Criteria1:="=" & Range("A2"), Operator:=xlAnd
    
'проверка автофильтра на наличие отфильтрованных данных после фильтрации, критерий фильтрации ячейка А2

If Worksheets("Лист1").AutoFilter.Range("A5:A" & LastRow).SpecialCells(xlCellTypeVisible).Count = "" Then 'если нет отфильтрованных строк, кроме шапки таблице, то
            MsgBox "Данных нет", vbExclamation, "Ошибка"
            ActiveSheet.ShowAllData 'снимаем установленный фильтр
            Exit Sub
        End If
       
MsgBox ("ok")
        
        End Sub
Макрос создания сводной таблицы не понимает название листа
 
Добрый день уважаемые форумчане.

Написал макрос, который создает сводную таблицу на основе диапазона с динамически изменяющимся кол-вом строк:
Код
Sub IO()
finalRow = Cells(Rows.Count, 2).End(xlUp).Row
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "HRST!R5C2:R" & finalRow & "C15", Version:=xlPivotTableVersion12).CreatePivotTable _
        TableDestination:="HRST!R5C18", TableName:="Сводная2", _
        DefaultVersion:=xlPivotTableVersion12
End Sub

Но вот проблема - название листа с иточником данных состоит из двух слов и разделено пробелом (без использования символа нижнее подчеркивание) и когда я использую в коде название листа HR ST, то макрос выдает ошибку Run Time error 5 Invalid procedure or argument

Но как только название листа переименуешь на HRST и внесешь соответствующие изменения в код, то макрос работает как часы и не выдает ошибку.

Хотелось бы узнать, можно ли как-то обойти данную ошибку без переименования листа HR ST в HRST, т.к. в книге есть множество других макросов, которые работают именно с названием HR ST и переделывать их все очень не хотелось бы.
Страницы: 1 2 3 След.
Наверх