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

Страницы: 1 2 След.
VBA + условное форматирование
 
Слэн, огромное спасибо за помощь - все работает!
VBA + условное форматирование
 
Уважаемые знатоки, прошу вашей помощи в следующей проблеме:

При добавлении УФ (с с формулой ниже) в ячейку H8 с помощью VBA-макроса оно не срабатывает до тех пор, пока не зайдешь в редактирование условия УФ и нажмешь ОК (при этом само условие не изменяя)

Формула:

Код
=СУММ(($C$3:$CB$3>=СЕГОДНЯ())*($C$3:$CB$3<СЕГОДНЯ()+21)*(($C$5:$CB$5-$C$4:$CB$4)>0))


Код:


Код
Sub UF()
    Cells.FormatConditions.Delete
    With Range("H8")
        .FormatConditions.Add Type:=xlExpression, Formula1:="=СУММ(($C$3:$CB$3>=СЕГОДНЯ())*($C$3:$CB$3<СЕГОДНЯ()+21)*(($C$5:$CB$5-$C$4:$CB$4)>0))"
        With .FormatConditions(1)
            .Interior.Color = vbRed
            .StopIfTrue = True
        End With
    End With
End Sub


В чем может быть причина?
Заранее спасибо за помощь!
Изменено: Darkman - 21.09.2013 00:11:23
СУММПРОИЗВ () + СТРОКА()
 
Уважаемые знатоки, есть ли у кого-нибудь идеи?
...уже голову сломал, почему не хочет работать УФ...
Заранее спасибо!
СУММПРОИЗВ () + СТРОКА()
 
Ок, тогда возникает следующий вопрос: почему при добавлении УФ (с данной формулой) с помощью VBA-макроса оно не срабатывает до тех пор, пока не зайдешь в редактирование условия УФ и нажмешь ОК (при этом само условие не изменяя)?

См. пример.

Заранее спасибо за помощь!
Изменено: Darkman - 17.09.2013 01:03:04
СУММПРОИЗВ () + СТРОКА()
 
Цитата
Все формулы в условном форматировании (и в именах) - это формулы массива
Вот уж, век живи - век учись, а я все пытался фигурные скобки в УФ впихнуть  :D  
Rustem, спасибо за совет.
Serge 007, спасибо за решение и ликбез.
А все-таки, кто-нибудь знает, почему функция СТРОКА отказывается работать?
СУММПРОИЗВ () + СТРОКА()
 
Уважаемые знатоки!
Прошу Вашей помощи в следующей проблеме: при использовании функции СТРОКА, внутри функции СУММПРОИЗВ, формула выдает значение #ЗНАЧ!. При явном указании номера строки - все считается корректно (см. пример).

Задача следующая: проверить, случается ли превышение дневных расходов над дневными доходами в течение следующих 21 дней (от текущей даты).

P.S. Дополнительные строки добавить нельзя, формулы массива также просьба не предлагать, так как данная формула будет использоваться в условном форматировании.
За пояснения, почему функция СТРОКА не желает работать - буду отдельно благодарен  :)
Заранее огромное спасибо!
СУММПРОИЗВ данных в нескольких столбцах
 
LightZ, ShAM, спасибо большое, оба ваши варианта работают.
СУММПРОИЗВ данных в нескольких столбцах
 
Уважаемые знатоки, прошу вашей помощи.  
 
Поступают данные по продажам нескольких товаров в таком виде, как в примере (изменить формат, увы, возможности нет никакой), причем один и тот же товар может продаваться по разной цене.    
Необходимо посчитать выручку (цена*количество продаж) по каждому товару за определенную дату (для примера по товару Good 2 за 01.08.2012).  
 
Очень надеюсь на вашу помощь с формулой.  
 
Заранее спасибо!
При открытии файла excel c поддержкой макросов происходит ошибка и требует восстановления
 
Попробуйте в код макроса добавить очистку полей сортировки, мне помогло:  
 
With ActiveWorkbook.Sheets(1).Sort  
.SortFields.Clear  
End With
Offtop: VBA Outlook 2003 - переключение редактора сообщений
 
Ну тогда, конечно же, на форум по фотошопу. :)  
А если серьезно, ребята, неужели никто никогда не сталкивался с задачей программной смены редактора сообщений?
Offtop: VBA Outlook 2003 - переключение редактора сообщений
 
В ООН может бы и обратился, да адреса не знаю :)  
Обратился на данный форум, потому что тут есть спецы по VBA, которые знают не только объектную модель Excel, но и Outlook.  
Чтобы быть ближе к теме форума, скажу, что в качестве вложения в сформированном письме будет EXCEL-файл :)))
Offtop: VBA Outlook 2003 - переключение редактора сообщений
 
Уважаемые знатоки, заранее приношу извинения, что на форуме Excel задаю вопрос по Outlook 2003, но вся надежда только на вас.  
Необходимо программно изменить используемый редактор сообщений с встроенного на Word, а затем обратно.    
Ручками это делается в настройках (скрин во вложении), можно ли это осуществить программно кодом на VBA.    
Копаю сейчас в сторону .EditorType = olEditorWord, но пока что-то не получается.  
 
Надеюсь на вашу помощь, заранее спасибо!
VBA: передача значения переменной
 
Hugo, Юрий М, спасибо Вам огромное за помощь, все получилось!  
 
P.S. Передаваемую переменную заключил в скобки: Outlook.Application.macro1(strPath)
VBA: передача значения переменной
 
На всякий случай приведу пример кода, может будут какие-то идеи?  
 
код Excel:  
 
Public strPath as String  
 
sub Test()  
...  
strPath = Application.GetSaveAsFilename(InitialFileName:="Test", fileFilter:="Excel Files (*.xls), *.xls", Title:="Save")  
 
Outlook.Application.macro1  
End sub  
 
код в Outlook:  
 
Public Sub macro1()  
...  
 
With OutMail  
       .Attachments.Add (strPath)  
       .Display  
End With  
 
 
Как передать значение переменной strPath?
VBA: передача значения переменной
 
{quote}{login=Юрий М}{date=22.05.2012 12:00}{thema=}{post}А обычная глобальная переменная не срабатывает?{/post}{/quote}  
Нет, потому что областью видимости глобальной переменной является проект, в модуле которого она объявлена. А задача состоит в том, чтобы передать значение переменной из проекта Excel в проект Outlook.
VBA: передача значения переменной
 
Хм, а из памяти ее никак не вытянуть?
VBA: передача значения переменной
 
Уважаемые знатоки, может вопрос и простой, но как передать значение переменной из процедуры Excel процедуру Outlook?  
 
То есть необходимо следующее: выполняется код в Excel, в ходе выполнения присваивается значение переменной, далее запускается код в Outlook, в который передается значение переменной, вычисленной в Excel.  
 
Заранее спасибо!
VBA: копирование массива в буфер обмена
 
Hugo, ребята, спасибо Вам всем огромное за помощь!    
Это уже огромный шаг вперед, единственное, что заменил vbTab на vbNewLine  
Дальше уже разберусь сам.  
Единственный вопрос, что за объект New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}
VBA: копирование массива в буфер обмена
 
Можно конечно, но хотелось бы обойтись без создания промежуточных дополнительных книг.
VBA: копирование массива в буфер обмена
 
К сожалению нет, массив то уже задан, тут больше копать надо в сторону работы с буфером обмена
VBA: копирование массива в буфер обмена
 
Уважаемые знатоки, прошу помощи. К сожалению поиском не нашел похожей темы.  
Задача следующая: скопировать в буфер обмена одномерный массив, для того, чтобы его можно было вставить в виде таблицы в совершенно другое приложение.  
 
 
Dim a(1 To 5) As String  
 
a(1) = test_1  
a(2) = test_2  
a(3) = test_3  
a(4) = test_4  
a(5) = test_5  
 
Заранее спасибо за помощь!
VBA: фильтр сводной таблицы
 
{quote}{login=ZVI}{date=05.12.2011 07:19}{thema=}{post}{quote}{login=Darkman}{date=05.12.2011 01:33}{thema=Re: }{post}P.S. На всякий случай: Excel 2010 SP1{/post}{/quote}  
Файл и сводная таблица были в формате Excel 2003, в этой версии все работает.  
Начиная с Excel 2007 сводные таблицы претерпели значительные изменения.  
Но при работе с полями даты, содержащими пустые ячейки, появились проблемы с программным скрытием/отображением элементов.  
 
Для исключения проблем лучше всего указывать динамический диапазон данных с исключением пустых ячеек в поле даты.  
 
Приложил исправленный таким образом файл из post_284932.zip  
Код немного обновлен.{/post}{/quote}  
Действительно, в Excel 2003 работает без проблем, проблемы начинаются только с 2007. Спасибо Вам!
VBA: фильтр сводной таблицы
 
{quote}{login=Михаил С.}{date=05.12.2011 01:14}{thema=}{post}Уж, поскольку нашел, покажу и свое решение.    
Вот тема,  
http://www.excelworld.ru/forum/2-793-1    
где решается подобный вопрос, но только чисто для 2010. Мне кажется, что самый первый файл подойдет и к более ранним версиям - проверить не могу, т.к. все их (и 2007, и 2003) снес, надоели.  
На всякий случай перевел этот файл в формат 2003.{/post}{/quote}  
Спасибо, интересное решение, возьму на вооружение.
VBA: фильтр сводной таблицы
 
{quote}{login=AKSENOV048}{date=05.12.2011 01:34}{thema=Re: Re: }{post}  
 
пробуйте!{/post}{/quote}  
Сработало,  а у меня почему-то не получилось, хотя через спецвставку и умножал на 1. Опишите алгоритм Ваших действий. Хотя смысл данного преобразования мне, в данном конкретном случае, и не совсем понятен.
VBA: фильтр сводной таблицы
 
{quote}{login=ZVI}{date=05.12.2011 01:21}{thema=}{post}Для того, чтобы программно установить фильтр поля сводной таблицы, необходимо сначала установить параметр сортировки поля = "вручную (разрешается перетаскивание)", а в конце восстановить сортировку поля. Этот факт малоизвестен.  
При тестировании я исправил этот параметр вручную, поэтому приведенный выше код сработал корректно.  
 
Чтобы все устанавливалось автоматически, нужен такой вариант кода:  
 
Sub Макрос1()  
 Dim i As Long, SortOrder, SortField  
 Application.ScreenUpdating = False  
 ОбновлятьФильтрыСводнойТаблицы  '<-- Достаточно выполнить один раз  
 With Sheets(1).PivotTables("summary")  
   .ManualUpdate = True  
   With .PivotFields("дата")  
     SortOrder = .AutoSortOrder  
     SortField = .AutoSortField  
     If SortOrder <> xlManual Then .AutoSort xlManual, SortField  
     For i = 1 To .PivotItems.Count  
       With .PivotItems(i)  
         If IsDate(.Value) Then  
           .Visible = .Value >= #12/15/2011#  
         End If  
       End With  
     Next  
     If SortOrder <> xlManual Then .AutoSort SortOrder, SortField  
   End With  
   .ManualUpdate = False  
 End With  
 Application.ScreenUpdating = True  
End Sub  
 
' См. http://www.planetaexcel.ru/forum.php?thread_id=2748  
Sub ОбновлятьФильтрыСводнойТаблицы()  
 Dim x  
 For Each x In ActiveWorkbook.PivotCaches  
   x.MissingItemsLimit = xlMissingItemsNone  
   x.Refresh  
 Next  
End Sub{/post}{/quote}  
 
Та же ошибка, что я делаю не так?  
P.S. На всякий случай: Excel 2010 SP1
VBA: фильтр сводной таблицы
 
{quote}{login=AKSENOV048}{date=05.12.2011 12:47}{thema=}{post}а мой вариант разве не работает?{/post}{/quote}  
 
К сожалению, нет :(    
Попробуйте, файл постом выше.
VBA: фильтр сводной таблицы
 
{quote}{login=ZVI}{date=05.12.2011 12:56}{thema=}{post}А чтобы не мигало:  
 
Sub Макрос1()  
 Application.ScreenUpdating = False  
 ОбновлятьФильтрыСводнойТаблицы  '<-- Достаточно выполнить один раз  
 Dim i As Long  
 With Sheets(1).PivotTables("summary").PivotFields("дата")  
   For i = 1 To .PivotItems.Count  
     With .PivotItems(i)  
       If IsDate(.Value) Then  
         .Visible = .Value >= #12/15/2011#  
       End If  
     End With  
   Next  
 End With  
 Application.ScreenUpdating = True  
End Sub{/post}{/quote}  
 
Выдает ту же ошибку :(((((((((((((((
VBA: фильтр сводной таблицы
 
{quote}{login=R Dmitry}{date=05.12.2011 12:29}{thema=}{post}списываем на очередной баг мелкософта :)){/post}{/quote}  
Списать я не против :) Вот только обойти это как-то нужно, проект стоит из-за этой, казалось бы, мелочи. Может есть еще какие-нибудь способы отфильтровать сводную таблицу с помощью VBA?
VBA: фильтр сводной таблицы
 
{quote}{login=R Dmitry}{date=04.12.2011 02:37}{thema=}{post}глюкнутая у Вас сводная, создайте новую{/post}{/quote}  
Для тестового примера это сработало, а вот для рабочего файла, почему-то нет. Полностью удалял лист со сводной таблицей и создавал заново, безрезультатно :-( Причем ошибка возникает исключительно с полем даты, на других полях работает без проблем.    
Опытным путем выяснил, что ошибка выдается на всех датах, кроме 12.12.2011. Есть у кого-нибудь идеи, что это может быть?
VBA: фильтр сводной таблицы
 
Вот пример, где этот же самый код срабатывает на "ура".  
 
Почему же он не работает в предыдущем примере???
Страницы: 1 2 След.
Наверх