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

Страницы: 1 2 След.
VBA: Получить дату на несколько месяцев меньшую от заданой
 
Здравствуйте  
 
Вопрос в заглавии.  
Если месяц находится в томже году, что и заданный - нет проблем.  
Делаю так (кпримеру)  
 
 Sub ttt()  
 
   iYear = Year(Now()) 'год  
   iMonth = Month(Now()) 'месяц  
   iDay = DateSerial(iYear, iMonth + 1, 1) - 1 'последний день месяца  
 
   n = Application.InputBox("Введите количество месяцев", "Окно ввода", "1") ' количество месяцев назад  
 
   iiDay = DateSerial(iYear, iMonth + 1 - n, 1) - 1 'последний день месяца необходимой даты  
 
   MsgBox "iDay = " & iDay & "    iiDay = " & iiDay  
 
 End Sub  
 
Если месяц находится в другом году - есть проблема.  
Подскажите, пожалуйста, а то мозги закипают.  ;(
Сравнение двух чисел
 
Всем привет!  
Ребят, помогите, а то застопорился.  
Надо сравнить 2 числа.  
Написал код, но на последнюю строку ругается.  
Знак уравнения берется с комбобокса (Znak)  
Одно число (iVidstan) - с текстбокса  
второе число (iV) - с ячейки  
 
 
Znak = Me.CB_VidstZn  
iVidstan = Replace(Me.TB_Vidst.Value, ".", ",")  
iV = .Cells(j, VidLich).Value  
If Evaluate(iV & Znak & iVidstan) Then  
 
Что не так?
Скрипт для замены старых данных на новые
 
Здравстуйте.  
 
Пытаюсь написать скрипт, по аналогии с VBA, но не получается.   :(  
Хочу, чтобы скрипт открыл файл (в фоне), сделал бы лист БД видимым,  
поменял старую цену на новую (вот тут-то и не работает),  
сохранил бы файл и закрыл его.  
Как записать это правильно, помогите, пожалуйста.  
 
Sub test()  
 
   Dim objXL  
   Dim Secur  
   Dim iLastRow  
   Dim iRow  
     
   Const Cena = 4567.128 'цена старая  
   Const CenaNew = 4536.528 'цена новая  
     
   Set objXL = CreateObject("Excel.Application")  
 
With objXL  
 
       .ScreenUpdating = True  
       .EnableEvents = False  
       .DisplayAlerts = False ' выключаем все предупреждения  
 
       .Visible = True 'False  
 
       '.Workbooks.Open (GasIA_Schet.xls)  
       .Workbooks.Open (Mid(Wscript.ScriptFullName, 1, Len(Wscript.ScriptFullName) - 8) & ".xls")  
     
       .Sheets("БД").Visible = -1  
       .Sheets("БД").Select  
       With .Sheets("БД")  
          iLastRow = .UsedRange.Row - 1 + .UsedRange.Rows.Count  
          For iRow = 3 To iLastRow Step 1  
             If .Cells(iRow, 3) = "Промисловість" Or .Cells(iRow, 3) = "Компобут" Then  
                If .Cells(iRow, 4) = "Сумигаз" Then  
                   If .Cells(iRow, 13) = Cena Then .Cells(iRow, 13) = CenaNew  
                End If  
             End If  
          Next iRow  
       End With  
     
       .Sheets("БД").Visible = 2  
         
       .ActiveWorkbook.Save  
       .ActiveWorkbook.Close  
         
       .DisplayAlerts = True ' включаем все предупреждения  
       .EnableEvents = True  
       .ScreenUpdating = True  
         
End With  
                 
End Sub
Перенос данных с одной таблицы в другую с суммированием (макрос)
 
Здравствуйте.  
Вопрос видимо простой, но решения не знаю.  
Есть две таблицы. Надо перенести данные с исходной в конечную (см. вложение), при этом просуммировав данные по второму столбцу в случае нескольких одинаковых данных в первом.  
Короче, с помощью формул все легко  
 
=СУММЕСЛИ($B$20:$B$31;I20;$C$20:$C$31)  
 
А как с помощью макроса - не заю.  
Пример с формулами и недоделанным макросом во вложении.  
Заранее спасибо.
Метод Hide - скрыть форму, а отобразить обратно?
 
Здравствуйте.  
При активации форма загружается долго из-за выполнения большого количества операций. Ну и захотел я временно скрыть форму, типа  
 
Private Sub UserForm_Activate()  
ZapBD.Hide  
DoEvents  
'Call MsgBox("Через пару сек появлюсь...", vbInformation, "Счас-с !!!")  
...  
'код  
...  
End Sub  
 
А вот как в конце кода активации обратно отобразить форму - не знаю.  
Форум просмотрел, Уокенбаха просмотрел - не нашел.  
Не подскажите?  
 
<< 79999 >>
Упростить код процедуры
 
Здравствуйте.  
Подскажите, пожалуйста, как упростить данную процедуру?  
Возможно ли это?  
(50 однотипных процедур)  
 
  If Me.CheckBox_1.Value <> 0 Then Me.TextBox_1.Value = 1  
     .Cells(iTempRng.Row, DU1).Value = Me.TextBox_1.Value  
 
  If Me.CheckBox_2.Value <> 0 Then Me.TextBox_2.Value = 1  
     .Cells(iTempRng.Row, DU2).Value = Me.TextBox_2.Value  
 
  ....  
  ....  
  ....  
   
  If Me.CheckBox_50.Value <> 0 Then Me.TextBox_50.Value = 1  
     .Cells(iTempRng.Row, DU50).Value = Me.TextBox_50.Value  
 
Спасибо.
Replace What:=".", Replacement:="/"
 
Всем ЗДРАВСТВУЙТЕ.  
 
Вот код  
 
Sub Макрос()  
 
Columns("B:B").Replace What:=".", Replacement:="/", LookAt:=xlPart, SearchOrder:=xlByRows  
 
Range("A1").Select  
     
End Sub  
 
Проблема состоит в том, что после замены некоторие записи преобразовываются в даты, а надо чтоб остался текст:  
1.1 --> 01.янв  
1.82 --> янв.82  
 
а надо  
 
1.1 --> 1/1  
1.82 --> 1/82  
 
Записи 1.100 и т.д. перезаписываются нормально. Изначальное форматирование диапазона как текст не помогает.  
Поиск по сайту не помог. Подскажите, пожалуйста, как правильно записать код  в данной ситуации.
За 5 банковских дней до начала месяца - формула
 
Здравствуйте!  
Понадобилось срочно вычислить дату за 5 банковских дней до начала месяца, притом формулой, для любого месяца и года.  
Т.е., например, ячейка А1-номер месяца, А2-число 25 (например, для октября 2010г.)  
Господа формулисты, помогите, пожалуйста.
Подсчет количества совпадений: проблема с датами
 
Всем БОЛЬШОЙ ПРИВЕТ!!!  
 
Есть столбец "А" с датами.  
Посредством формы с комбобоксом выбираем дату и подсчитываем количество совпадений/несовпадений данной дати со списком в столбце "А". Результат записываем в ячейки "D2" и "E2" соответственно. Список уникальных значений в комбобоксе формируется с помощью функции UniqueValues, которую на Планете и взял.  
Проблема:    
Список дат в комбобоксе получается разный, типа 20.09.2010 и 09/20/2010. Из-за этого возникает проблема с подсчетом. При проверке списка дат (Сервис-Параметры-Вид-Формулы(галочка)) обнаружил, что даты имеют разный формат, типа 20.09.2010 и 40537. Взял перемножил весь список дат на 1, получил представление в комбобоксе в виде 09/20/2010. В результате макрос перестал считать совпадения. :(  
Что хотелось бы иметь:  
Чтобы список в комбобоксе имел формат только типа 20.09.2010 (соответственно - и список в столбце "А"), визуально это удобнее, ну  и подсчет совпадений был бы правильный.  
 
Прошу помочь решить данную проблемку.  
Простенький пример прилагаю.  
 
Спасибо.
Обращение к листу по его номеру
 
Здравствуйте.  
Есть следующий код копирования листа:  
 
iShtName = "2677,13" '  "2677,13" <==> Лист6  
Sheets(iShtName).Copy Before:=Sheets(1)  
ActiveSheet.Name = iShtName & "_П"  
 
т.е. получаем лист с названием "2677,13_П"  
Название исходного листа "2677,13" временами меняется.  
Вопрос: можно ли в данном коде использовать не название листа "2677,13", а его номер (в данном случае 'Лист6'), но в результате получать копию с тем же названием, что и исходный лист плюс приставка '_П'?  
Если да, то как?  
Заранее благодарю.
Отправка файла почтой: массив в адрессной строке.
 
Здравствуйте.  
Есть файл, который рассылаю почтой вот так:  
   
With ActiveWorkbook  
    .SendMail Recipients:="1111@sm.ukrtel.net", Subject:="Operativ "  
    .SendMail Recipients:="1111@inbox.ru", Subject:="Operativ "  
    ....  
    ....  
 End With  
 
т.е. один адрес - одно письмо. Вопрос - можно ли прописать массив адрессов: одно письмо, а в адресной строке чтобы прописывались сразу все адреса, как это и делается в почтовике? У меня TheBat.
Отказ Copy/Paste при увеличении диапазона копирования
 
Здравствуйте!  
Вот часть моего кода:  
 
   iNRow = Sheets("ActSv").Cells(Rows.Count, 16).End(xlUp).Row ' определяем последнюю строку исходной таблицы  
   Range("A10:M10").Copy: Range("A10:M" & iNRow).PasteSpecial Paste:=xlPasteAll  
 
Вчера работал, сегодня - нет. Пишет:  
"Метод PasteSpecial из класса Range завершен неверно" и указывает на  
Range("A10:M" & iNRow).PasteSpecial Paste:=xlPasteAll  
Причина оказалась в диапазоне: таблица увеличивается каждый день.  
Сегодня количество строк таблицы 4151, уменьшаю до 4100 - работает.  
Так понимаю, я перешел какой-то предел?  
Как выйти из этого положения?
Почему меняется скорость выполнения кода?
 
Всем привет!  
Всех с праздникои Николая, с Троицей!  
К теме.  
Первый раз столкнулся с проблемой такого рода.  
В общем есть диапазон ячеек заполненный числами, но среди них есть пустые и как бы пустые (с нулевой длинной текста, что-ли). Со всеми пустыми ячейками  решил бороться, заполнив их нулями. Организовал двумя циклами это, все работает. Загвоздка в другом. В оригинале проверяется более 20 000 ячеек. Выполнение макроса происходит за 3-4 сек, если только в книге один лист с этим диапазоном ячеек. В оригинальном файле (вес 18М, листов 30) эта операция выполняется около 135 сек! В чем загвоздка: в коде или в чем-то другом?
В 2007 не работает команда удаления объекта AutoShape!
 
Здравствуйте.  
Столкнулся с такой проблемой: рабочий код в 2003 офисе при тестировании в 2007 вдруг заклинил на команде    
ActiveSheet.Shapes("AutoShape 1").Delete  
Попробовал записать макрорекордером данную операцию (в 2007) - пусто, т.е.    
Sub Макрос1()  
'  
' Макрос1 Макрос  
'  
 
'  
End Sub  
Я чего-то не знаю?  
Как быть, если объект все-таки надо удалить?  
 
Во!  94449
Обработка события: 2003 - работает, 2010 - не работает
 
Здравствуйте.  
Вот код  
 
Private Sub Worksheet_Change(ByVal Target As Range)  
If Target.Cells.Count > 1 Then Exit Sub  
     
If Target.Address(False, False) = "B1" Then  
 
 schetNr = Target.Value: copyD    
 
End If  
 
End Sub  
 
В 2003 - работает, в 2010 - не работает.  
Фокус в чем, В1 на самом деле объединенные В1:В3.  
Если просто В1 - работает, объединяю - не работает.  
Почему так (что "Объединение ячеек - это зло!" - я понял)?  
И как с этим бороться, кроме разъединения?
Проблема с СУММ() при работе макроса
 
Задали мне тут задачку, с виду простенькую, а вот на малом, казалось, споткнулся.  
В таблицу макросом добавляется строка  
Проблема с СУММ(). Сейчас записано  
=СУММ($D5:$D7)  
При добавлении строки имеем  
=СУММ($D5:$D8)  
Но если оставить в таблице одну строку, т.е. формула будет  
=СУММ($D5:$D5)  
и добавить новую строку, получаем формулу  
=СУММ($D6:$D6)  
В макросе начальная формула выглядит как  
   ActiveCell.FormulaR1C1 = "=SUM(R[-3]C4:R[-1]C4)"
Часть   R[-1]C4 устраивает меня полностью, это ячейка над формулой, а вот как быть с R[-3]C4 - не знаю.
Дело в том, что количество строк над таблицей тоже может меняться, а суммироваться должно именно формулой, а не чисто макросом.  
Как быть?    
По-моему объяснил всё подробно, исправляюсь потихоньку.   :)
Конструктор отчетов3
 
Может кому-то и надо.    :)  
Можно прикрутить к любой базе данных.  
Изменить достаточно при этом только названия листов по макросах.  
Сделал как мог, так что любая критика принимается.
Опредиление активного листа в MultiPage
 
Здравствуйте.  
Есть форма.  
В форме есть MultiPage с несколькими листами.  
В коде нужно определить, какой лист на данный момент активен, т.е. открыт визуально, что-ли.  
Пытаюсь вот таким образом, но, видать, плохо стараюсь:  
 
If MultiPage1.TabIndex = 0 Then  
   Me.Label1.Caption = "Проверка 1"  
  Else  
   If MultiPage1.TabIndex = 1 Then  
      Me.Label2.Caption = "Проверка 2"  
    ElseIf MultiPage1.TabIndex = 2 Then  
      Me.Label3.Caption = "Проверка 3"  
   End If  
End If  
 
Подскажите пожалуйста, как правильно это осуществить.
Перебор объектов в цикле
 
Пытаюсь перебрать объекти в цикле, но не получается  
 
For i = 1 to 20  
 
With Me.TextBox & i  
-------------------  
End With  
 
Next i  
 
Подскажите, пожалуйста, как правильно это сделать.
Конструктор отчетов 2
 
Здравствуйте.  
В продолжение темы  
http://www.planetaexcel.ru/forum.php?thread_id=14580  
Сделал, что хотел. Коряво, правда, но работает.  
Прошу помочь в следующем:  
1. Для фильтра условия, типа "равно", "не равно" и т.д. я беру с колонки АІ листа "Оп.дані", как от этого уйти, т.е. чтобы они были заложены уже в макросе?  
2. Я сделал фильтрацию по одному выбранному полю. А как попроще, минимум усложняя форму, заложить последовательную фильтрацию по 5 столбцам? Может кто-нибудь даст совет, идею?
Конструктор отчетов
 
Здравствуйте.  
Пытаюсь создать такой конструктор, но не все получается.  
Буду благодарен за любую помощь.  
Условия смотрите в файле.
Ускорение процеса переноса информации
 
Здравствуйте.  
В коде много раз использую подобну команду  
Cells(i, 5).Copy: .Cells(LastRow, 33).PasteSpecial Paste:=xlPasteValues  
но заметил, что в сравнении с  
Cells(i, 5).Copy .Cells(LastRow, 33)  
она выполняется в два раза дольше.  
Можно ли ее ускорить изменив как-то (мне нужно переносить только значения)?  
Спасибо.
Суммирование значений ListBox`а в ListBox`е
 
Здравствуйте.  
Как правильно записать подобную конструкцию, чтобы получить сумму значений ListBox`а в ListBox`е. В данном примере сумма получается, как текст, т.е. типа: 1,0415,514, а надо 6,555.  
With ListBox2  
.ColumnCount = 5  
.AddItem ""  
.List(0, 0) = ListBox1.List(0, 0) + ListBox1.List(1, 0)  
End With  
Спасибо.
Перенос данных с Базы Данных в Отчет
 
Ребята, помогите, пожалуйста.  
День проигрался, но не смог сам.  
Надо перенести часть данных с Базы Данных в Отчет.  
На листе БД - данные, на листе Отчет - результат.  
Остальное в файле.  
 
Заранее благодарен.
[ Закрыто] Вопрос по правописанию :) - ПЕРЕМЕЩЕНА В ФОРМУМ ПО РУССКОМУ ЯЗЫКУ
 
Здравствуйте!  
Как грамотно записать подобную конструкцию, т.е. объединить под общей командой:    
   ComboBox1.BackColor = vbWhite  
   TextBox1.BackColor = vbWhite  
   TextBox3.BackColor = vbWhite  
   TextBox8.BackColor = vbWhite  
   TextBox9.BackColor = vbWhite  
Спасибо!
Уникальное зачение в ListBox
 
Здравствуйте.  
Вопрос для многих простой, но я пока не справлюсь сам.  
Есть БД, надо по столбцу А отфильтровать таблицу по одному значению и полученный результат отобразить в ListBox. Я то могу это сделать так:  
- отфильтровать данные  
- скопировать полученные данные  
- вставить в чистый лист  
- оттуда построчно переписать данные в ListBox.  
а как тоже самое сделать напрямую без промежуточного листа - не знаю. Пока не знаю. :)  
Помогите на простеньком примере (прикр. файл).  
Спасибо.
Форматирование числовых данных в ListBox по столбцам
 
в первую очередь - ВСЕХ С ПРАЗДНИКОМ! ВСЕХ БЛАГ ВАМ, ЗАЩИТНИКИ!  
ну и задачка во вторую очередь.  :)  
Сделал форму с ListBox на 5 колонок и 12 строк.  
Но не знаю как в таком случае отформатировать данные.  
В идеале хотелось бы первый столбец иметь в формате 0,000, остльные - 0,00.  
В крайнем случае все - 0,000.  
Если можно такое, помогите, пожалуйста!  
Ну я начал размышлять о том, что это будет легче сделать, если заполнять ListBox по столбцам ( я сделал по строкам).  
Но не тут-то было, не получается, закралось подозрения, что так нельзя. Или можно? Разъясните.  
Ну и, наконец, хотелось бы услышать критику по поводу построения кода.  
Заранее благодарю.
Вывод на средину экрана окончания таблицы
 
Есть большая таблица.  
Чтобы дойти до конца таблицы приходится крутить и крутить колёсиком...  Надоело однако.  
Можно ли макросом заставить вывести на средину экрана (приблизительно) последнюю заполненую строку (или первую пустую по определённому столбцу)  таблицы.  
По-моему с формулировкой нормально...   :)  
 
37737
MsgBox по событию изменения значения в диапазоне
 
Здравствуйте!  
Ну не получается!  
При изменении значения в "B1" проверяется диапазон Range("B30:B40") на предмет наличия "0" по значению (в этом диапазоне формулы).  
Если есть "0" - значит выдается MsgBox.  
Но у меня чёт всегда выдается...    ;(  
Подправьте, пожалуйста.  
 
If Target.Address(False, False) = "B1" Then  
 schetNr = Target.Value: copyData  
   If Application.CountIf(Range("B30:B40"), "") = 0 Then  
     MsgBox "НЕ ВЕРУЛИ ДОГОВОРА!", 48, "ВНИМАНИЕ!!!"  
   End If  
End If
Не могу правильно организовать цикл!
 
Здравствуйте!  
Простенький цикл по удалению столбцов.  
Удаление столбцов можно организовать и без цикла, наверное, но хочется понять такой вариант.  
Короче: циклом удаляются столбцы через один, а надо подряд в указанном диапазоне. Где подвох догадываюсь, а как правильно прописать - не знаю.  
Подскажите, пожалуйста.  
Вот код и примерчик.  
 
Sub ttt()  
 
   k = [A1] * 2 + 3
     
   For k = k To 30 Step 1  
     Columns(k).Delete Shift:=xlToLeft  
   Next  
 
End Sub
Страницы: 1 2 След.
Наверх