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

Страницы: 1
Удаление форм и модулей из книги
 
Добрый вечер всем !

Вопрос такого плана - как программно удалить лишние модули и формы книги, оставив только нужные ?
Есть конечно проверенный макрос который удаляет все модули и формы из книги - но задача не удалять все, а оставить нужные модули и формы - остальные удалить.
Код
Sub Delete_Macroses_ОСН()
    Dim oVBComponent As Object, lCountLines As Long
    'Проверяем, защищен проект или нет
    If ActiveWorkbook.VBProject.Protection = 1 Then
        MsgBox "VBProject выбранной книги защищён." & vbCrLf & _
             "     Компоненты не будут удалены.", vbExclamation, "Отмена выполнения"
        Exit Sub
    End If
 
    For Each oVBComponent In ActiveWorkbook.VBProject.VBComponents
        On Error Resume Next
        With oVBComponent
            Select Case .Type
            Case 1    'Модули
                .Collection.Remove oVBComponent
            Case 2    'Модули Класса
                .Collection.Remove oVBComponent
            Case 3    'Формы
                .Collection.Remove oVBComponent
            Case 100    'ЭтаКнига, Листы
                    lCountLines = .CodeModule.CountOfLines
                    .CodeModule.DeleteLines 1, lCountLines
            End Select
        End With
    Next
    Set oVBComponent = Nothing
End Sub
Перенос данных из закрытой книги и в закрытую книгу
 
День добрый всем !

Столкнулься с таким вопросом - можно ли в VBA осуществлять перенос данных макросом из открытой 1 книги в закрытую 2 книгу (не открывая 2 книгу).
И обратная ситуация  - можно ли в 1 открытую книгу макросом 1 книги  забрать данные из 2 закрытой книги (не открывая 2 книгу).

Почитал в инете - вроде проскальзывает что можно  - или нельзя и обязательно надо открывать 2 книгу ?
Вопросы по защите в Excel/VBA
 
День добрый всем !

Задался целью обезопасить учетную рабочую таблицу чтобы файл Excel работал только на определенном компе
- а если на других открываешь файл самоуничтожается
Нашел замечательный код здесь http://www.programmersforum.ru/showthread.php?t=36480 от уважаемого EducatedFool
Код
Private Sub Workbook_Open()
    Const My_Drive_C_SerialNumber = "12345678" ' сюда пишем серийный номер своего диска
    If Drive_C_SerialNumber <> My_Drive_C_SerialNumber Then
        MsgBox "Вы пытаетесь открыть файл на другом компьютере", vbCritical, "Нет доступа"
        Application.DisplayAlerts = False
        newsh = ThisWorkbook.Worksheets.Add.Name    ' создаём пустой лист
        For Each sh In ThisWorkbook.Worksheets
            If sh.Name <> newsh Then sh.Delete    ' удаляем все листы этого файла, кроме пустого
        Next
        ThisWorkbook.Save
        ThisWorkbook.Close False
    End If
End Sub

Function Drive_C_SerialNumber() As String
    Drive_C_SerialNumber = CreateObject("scripting.filesystemobject").GetDrive("c:\").SerialNumber
End Function

При тесте узнал предварительно серийник диска С своего компьютера (через командную строку сделать wmic diskdrive get model,name,serialnumber ) , ввожу свой серийник диска С  и пробую запустить на своем же компьютере  - но вываливается
MsgBox "Вы пытаетесь открыть файл на другом компьютере"  хотя серийник ввел правильно 100% (перепроверил серийный номер другими прогами)
В чем может быть ошибка - серийник диска обычно выдается большими буквами типа JPS930N11PNDRV  - может маленькими надо вводить или что в коде поправить ?
Изменено: oleg355 - 06.06.2018 17:54:08
Не отключается таймер по времени в макросе
 
Вечер добрый всем !

Кое как на примерах наваял конструкцию с таймером на сохранение файла с MsgBox "Продолжить автосохранение ?" Да - продолжаем Нет - автосохранение прекращается до следующего запуска файла
Но по кнопке MsgBox Нет выполнение автосохранения продолжается - почему и как можно сделать так чтоб процедура по таймеру прекратилась до след запуска ?

В  модуле
Код
Public Flag As Boolean
Sub АвтосохранениеКнига()
Flag = True
'If Flag = True Then
'If Flag Then
If Flag Then
Application.OnTime Now + TimeValue("00:01:00"), "АвтосохранениеКнига" ' Автосохранение через заданный период времени
If MsgBox("Продолжить дальнейшие автосохранения файла?", vbYesNo + 32, "Предупреждение!") = vbNo Then
    'Здесь действия при отрицательном ответе
    Flag = False
    Exit Sub
    'Здесь действия при положительном ответе
    Flag = True
End If
End If
Call Автосохранение_Архив_осн
End Sub

Код
Public Flag As Boolean
Private Sub Workbook_Open() 
Flag = True
Call АвтосохранениеКнига 'сохраняем книгу по таймеру в каждые 15 мин 
End Sub

В чем может быть дело - как этот таймер до перезапуска остановить ? Вроде Flag = False и      Exit Sub есть но таймер все равно работает   Далее если в начале кода модуля поставить If Flag Then просто или If Flag = True Then - вообще ничего не запускается - почему? тогда получается на открытие книги Flag = True не работает ? вобщем запутался я в этих флагах ...

Изменено: oleg355 - 03.06.2018 22:38:33
Проверка ввода даты в ячейку по условию
 
Добрый день !

Пробую прописать условие на ввод в ячейку даты - не получается

Условия такие:
Разрешить ввод:  заносить в ячейку текст только в виде dd.mm.yyyy hh:mm  (05.07.2018 12:00)

Запретить  ввод:
1)текст  в виде dd.mm.yyyy - пример 05.07.2018
2)текст  в виде dd.mm.yy - пример 05.07.18

3)текcт в виде dd.mm.yyyy 00:00  - пример 05.07.2018 00:00  05.07.2018 00:20
до
текcт в виде dd.mm.yyyy 02:00  - пример 05.07.2018 02:00
Изменено: oleg355 - 02.06.2018 14:09:12
Преобразование значения активной ячейки
 
Добрый день всем !

Вопрос такой:
В активную ячейку записываются значения даты вида  09.06.2018  8:00:00 либо 09.06.2018 16:00:00
те цифры и точки  + один или два пробела и последовательность всегда одинакова

Как оставить в ячейке первые 10 знаков (09.06.2018) и все что после этого стереть ?
ActiveCell.Value = ?
Фильтрация таблицы по датам с помощью макроса
 
День добрый всем !

Макросом задача сделать фильтрацию Автофильтр  по датам в столбце таблицы
Предварительно пишу рекодером фильтрацию Рекодер показывает следующее
Код
ActiveSheet.Range("$A$3:$T$5000").AutoFilter Field:=11, _
 Criteria1:=">=01.06.2018", Operator:=xlAnd, Criteria2:="<=06.06.2018"

Далее заношу в макрос этот код
Код
Sub ЗапуститьАвтофильтрС01_06до06_06()
    ActiveSheet.Range("$A$3:$T$5000").AutoFilter Field:=11, _
 Criteria1:=">=01.06.2018", Operator:=xlAnd, Criteria2:="<=06.06.2018"
End Sub
и макрос не работает - не фильтрует выдает ничего - скрывает строки в диапазоне просто и не ищет диапазон дат.   Почему?
Вроде простая задача но факт  
Пример прилагаю
Изменено: oleg355 - 01.06.2018 17:49:16
Вытащить из текста ячейки телефон в буфер обмена по маске
 
Вечер добрый всем !

Из текста надо выдрать телефоны в буфер обмена - но как маску написать  тк телефоны могут быть
11 цифр (15 символов)через тире типа 8-902-567-44-32
могут быть хотично с тире написаны типа 8902567-44-32
могут быть со скобками и тире типа 8(902)567-44-32 а могут так 8(902)5674432
могут быть с +7 типа +7(902)567-54-32 могут такие быть +7902567-54-32
а могут быть вообще без 7 или 8 типа (902)5674432 либо (902)567-44-32

Хотя общие закономерности есть:
1)Количество цифр в номере мб только 10 или 11
2)Если цифр 10 - то можно прибавить 8 - те если вытаскивается 10 цифр - к ним прилепить 8 с начала
3)Телефон в тексте только один
4)Других повторяющихся подобных цифр типа дат нет
5)Поймать нужно в тексте только цифры подряд или разделенные символами (,),-,+
4)На выходе в буфер обмена нужны только "очищенные" цифры без символов
причем без разницы - начинаются на 7 или на 8  типа
89025675432
76578964321

Пример во вложении

Макрос такой вроде работает по тексту в буфер обмена вроде работает - но как  маску для него прописать по условиям выше
Макрос Текст из 5 столбца в строке с активной ячейкой в буфер обмена
Код
Sub ТекствБуферОбмена()
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.SetText Cells(ActiveCell.Row, 5)
.PutInClipboard
End With
End Sub
Примечание в режиме редактирования блокирует макросы по кнопкам
 
Доброго вечера всем !

Вопрос такой: я перевожу активированное примечание в режим редактирования
(щелчок ЛК мыши на активированном примечании) Примечание становится в рамке с квадратиками
Так вот когда примечание в режиме редактирования - макросы не работают по кнопкам

Как заставить работать макросы когда примечание находится в режиме редактирования ?
Пример с появлением примечаний приложил -
Примечания появляются в столбце А по одинарному клику мыши
Примечания убираются в столбце А по двойному клику мыши
Изменено: oleg355 - 28.05.2018 17:52:04
Связать 2 ComboBox в форме по значениям - как более корректно
 
День добрый всем !

Хотел поинтересоваться у гуру как связать 2(два) ComboBox в форме по значениям - как более корректно сделать
так как есть .Text,  .Value, .List, .ListIndex, .RowSource, .AddItem, .Clear и пр запутаться можно

Задача была вроде простая - 2(два) ComboBox в форме по значениям по следующим условиям:
Combobox1 имеет выпадающий список со значениями "Поставщик1", "Поставщик2", "Поставщик3"
Combobox2 не имеет ничего - данные в его лист заносятся в зависимости от значения Combobox2
(данные соответственно Товар1,Товар2,Товар3 тоже как выпадающий список)
те
в Combobox1 выбрали "Поставщик1"  - получили в Combobox2 выпадающий список Товар1
в Combobox1 выбрали "Поставщик2"  - получили в Combobox2 выпадающий список Товар2
в Combobox1 выбрали "Поставщик3"  - получили в Combobox2 выпадающий список Товар3

По неполному знанию данного вопроса в результате экспериментов получилось и работает так:
Код
Private Sub UserForm_Activate()

ComboBox1.Text = ""
Call Поставщики'здесь макрос заполнения ComboBox1.List вып список  "Поставщик1", "Поставщик2", "Поставщик3"

ComboBox2.Text = ""
ComboBox2.ListRows = 20

End Sub
Код
Private Sub ComboBox1_Change() 'Выберите поставщика
ComboBox1.Style = fmStyleDropDownList 'запрещаем вносить значения кроме выпадающего списка

If ComboBox1.Text = "" Then
UserForm1.ComboBox2.Clear 'стираем предыдущие значения ComboBox2
End If

If ComboBox1.Text = "Поставщик1" Then
UserForm1.ComboBox2.Clear 'стираем предыдущие значения ComboBox2
Call Товар1 'здесь макрос заполнения ComboBox2.List на Товар1 вып список
End If

If ComboBox1.Text = "Поставщик2" Then
UserForm1.ComboBox2.Clear 'стираем предыдущие значения ComboBox2
Call Товар2 'здесь макрос заполнения ComboBox2.List на Товар2 вып список
End If

If ComboBox1.Text = "Поставщик3" Then
UserForm1.ComboBox2.Clear 'стираем предыдущие значения ComboBox2
Call Товар3 'здесь макрос заполнения ComboBox2.List на Товар3 вып список
End If

End Sub

Sub Товар1 () 'здесь макрос заполнения ComboBox2.List на Товар1 вып список
''''''''''
End Sub 

Sub Товар2 () 'здесь макрос заполнения ComboBox2.List на Товар2 вып список
''''''''''
End Sub

Sub Товар3 () 'здесь макрос заполнения ComboBox2.List на Товар3 вып список
''''''''''
End Sub




Вопросы такие:
Что лучше использовать на ввод пусто  в Combobox
.Text = ""
.Value = ""
.List = ""
.ListIndex = -1
.RowSource = ""

Что лучше использовать на ввод значений по условию  If ComboBox1.Text =
.Text =
.Value =
.ListIndex = 0,1 и тд
.RowSource = "......"

Что лучше использовать на ввод выпадающего списка
1) макрос заносит в .List сразу
2) макрос заносит в массив arr - а потом .AddItem arr  в комбобокс
3) макрос заносит массив в .RowSource
Убрать пустые строки из выпадающего списка ComboBox
 
Здравствуйте всем !

Есть проблемы с выпадающим списком из Combobox формы:
список для заполнения ComboBox лежит на соседнем листе и имеет пустые строки среди заполненных
Сделал так:
Для заполнения списка ComboBox использовал свойство RowSourse и диспетчер имен
В диспетчере имен сделал наименование  "Tovar" и и ссылку на диапазон соседнего листа в виде  

=СМЕЩ(Данные_Вып_список!$С$4;0;0;СЧЁТЗ(Данные_Вып_список!$С$4:С$500);1)

и в RowSourse  соответственно  = Tovar

Проблема 1:  в диапазоне соседнего листа для заполнения ComboBox имеются пустые строки между заполненными строками -  ссылка на диапазон в виде СМЕЩ и СЧЁТЗ не помогают (разрывы строк в Combobox остаются)

Проблема 2: сам диспетчер имен и занесение в него ссылок подобного типа - дело неблагодарное тк постоянно диспетчер глючит и меняет ссылки непонятно почему

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

Свой пример в файле приложил.

Изменено: oleg355 - 26.05.2018 20:09:15
Ввод в активную ячейку только значения по маске или шаблону
 
Добрый день всем!

Как прописать разрешенный алгоритм ввода в ячейку вручную в диапазоне листа
Если алгоритм нарушается то MsgBox и обнуление значения ячейки
В ячейку должен вводится текст телефона по шаблону +7(###)###-##-##  (c +7 вначале - те один "+" и обязательно 7ка, 2мя скобками, 2тире, 10 цифр от 0 до 9 и только цифры)
Если нарушается ввод по шаблону, то MsgBox и активная ячейка обнуляется
Можно и по варианту 2 - ограничение до 16 симоволов (при этом один +, одна 7, 2 скобки, 2 тире, 10 цифр и только цифры присутствуют) потом перепроверить в конце ввода по сохранению значений в активной ячейке

Сам не знаю как этот шаблон написать ...

Макрос по событию
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

If Sh.Name = "Таблица" Then
If Target.Cells.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub

If Not Intersect(Target, Range("C4:C5003")) Is Nothing Then

'здесь шаблон ввода

Else
MsgBox "Вводите данные только в формате +7(###)###-##-## "
Target = ""
End If

End If
End Sub
Как снять фокус с TextBox из формы при активной форме
 
Добрый день всем !

Делаю форму для занесения телефонного номера в определенном формате из TextBox формы в активную ячейку в диапазоне C4:C500 листа
Такая последовательность действий
1)Вызываем форму даблкликом в ячейке диапазона листа
2)Форма вызывается, при вызове в TextBox формы уже прописано как будет выглядеть образец записи в активную ячейку
При этом фокус курсора находится в  TextBox
Код
Private Sub UserForm_Activate()
  ZVI_SetFormPosition Me  ' <-- Привязка формы к активной ячейке
  TextBox1.Value = "+7(###)###-##-##" 'в TextBox1 светится при активации формы как будет выглядеть тел номер после занесения в активную ячейку
  'TextBox1.SetFocus = False 'снимаем фокус с TextBox1 формы ВОТ ЭТА КОМАНДА НЕ КАТИТ
End Sub
Здесь Надо вывести курсор из активного состояния в TextBox
Пробую выше в коде TextBox1.SetFocus = False 'снимаем фокус с TextBox1 формы - не прокатывает

3)Далее по событию
Код
Private Sub TextBox1_Change()
'TextBox1.SetFocus = 'устанавливаем фокус в TextBox1 формы
'TextBox1.Value = "" 'стираем предыдущее значение
'TextBox1.Value = "+7" 'заносим автоматом значение +7 для последующего ввода 10 цифр телефонного номера
Как снять фокус с TextBox1 формы ?   'TextBox1.SetFocus = False не работает
Пример во вложении
Изменено: oleg355 - 17.05.2018 16:31:15
Закрас ячеек в зависимости от внесенных данных в ячейку
 
Добрый вечер всем !

Нужна помощь в функциях макроса
Задача не встречал в примерах сам получайник
В ячейку листа вносятся постоянно однотипные данные с текстом  "//Клиент переведен в статус ......."
после внесения через форму преобразуется в текст //"Клиент переведен в статус ПЕРЕЗВОН" или "//Клиент переведен в статус ОТКАЗНИКИ" и тд
Это постоянно вносится  
Нужно поймать ПОСЛЕДНИЙ текст в ячейке "//Клиент переведен в статус " + поймать слово после него следующее слово через пробел  и заканчивающееся на точку и закрасить строку активной ячейки в зависимости от этого слова в конце фразы. Как поймать последний однотипный текст  - Instr не поможет видимо все возьмет  - именно последний однотипный + определить слово после него и закрасить строку ?
Башку всю сломал как это сделать ? Как поймать ПОСЛЕДНЕЕ однотипное словосочетание и слово после него внутри текста? Пример сделал как надо
Просто могут быть варианты повторяющегося текста например в середине текста ячейки одинаковые -  например начинается текст "//Клиент переведен в статус ОТКАЗНИКИ"  в середине текста "//Клиент переведен в статус ПЕРЕЗВОН" потом снова в "//Клиент переведен в статус ОТКАЗНИКИ"   - текст  не уникальный в значениях нужен последний и закрас от значения последнего именно
Пример во вложении
Изменено: oleg355 - 13.05.2018 22:11:10
Пронумеровать первый столбец по открытию книги
 
Здравствуйте !

Требуется пронумеровать первые столбцы (столбцы А) определенных листов при открытии книги
ориентируясь по заполненному столбцу B начиная с 4 строки
Макрос работает для 1 листа, а для нескольких листов не работает  где ошибка?
Код
Private Sub Workbook_Open()
Dim Wsh As Worksheet
For Each Wsh In ThisWorkbook.Worksheets
If Wsh.Name = "Таблица" Or Wsh.Name = "Приход" Or Wsh.Name = "Перезвон" Or Wsh.Name = "Отказники" Or Wsh.Name = "Отбраковка" Then
Wsh.Cells(4, 1).Value = 1
Dim LastRow As Long, i As Long, Num As Long
    LastRow = Wsh.Cells(Wsh.Rows.Count, 2).End(xlUp).Row
    For i = 4 To LastRow
        If Wsh.Cells(i, 2) <> "" Then
            Num = Num + 1
            Wsh.Cells(i, 1) = Num
        End If
    Next
End If
Next
End Sub
 
Как запомнить Target изначально выделенной ячейки
 
Добрый день всем !

Имеется на листе событие Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
в диапазоне H4:H500
Макрос привязан на изменение активной ячейки в диапазоне соответственно

Зафиксировать изменение активной ячейки можно 3 способами
1)С помощью формы UserForm - все нормально, макрос выполняется

Но пользователь же может и руками зафиксировать изменение активной ячейки

2)Клавишей Enter - тут при нажатии по умолчанию активная ячейка сползает вниз - регулируется в настройках Excel
Файл-Параметры-Дополнительно - Переход к другой ячейке после нажатия Ввод
Программно снять галку можно Application.MoveAfterReturn = False
- все нормально, макрос выполняется

3)После изменения активной ячейки щелкнуть мышкой в диапазоне на другую ячейку
Тут активная ячейка на срабатывание макроса меняется и надо как то видимо изначально запомнить Target активной ячейки
и вернутся при изменении адреса активной ячейки  - но как это сделать ? Познания мои невелики ...

Попробовал так - не получается
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.MoveAfterReturn = False
If Not Intersect(Target, Range("H4:H500")) Is Nothing Then

Dim ii
ii = Target.Address 'присваиваем переменной адрес выделенного диапазона
If Target.Address <> ii Then 'если кликом мыши поменяли адрес
''Application.Undo 'это не сработало
Target.Address(0, 0) = ii ' Target возвращается обратно - здесь ошибка идет
End If
 ''''''' мой макрос
End If
End Sub

Изменено: oleg355 - 07.05.2018 13:04:44
Макрос вставляет время как дробное число в ячейку
 
Доброго дня всем !

Столкнулся с проблемой что формат времени отображается в тексте ячейки как дробное число
Переношу значение ячейки со временем по макросу в ячейку с общим форматом и вижу дробное число
те результат получается примерно такой в итоге  //Дата_16.05.2018 Время_0,760416666666667
а надо чтоб так было  //Дата_16.05.2018 Время_13:40
Код
Sub Примечание()
If Not Intersect(ActiveCell, Range("J4:J40")) Is Nothing Then
ActiveCell.Offset(0, -1).Value = TimeValue(ActiveCell.Offset(0, -2).Value)
Dim DataN1 As Date
DataN1 = DateValue(ActiveCell.Offset(0, -2).Value)
ActiveCell.Value = ActiveCell.Value & "//" & "Дата" & "_" & DataN1 & " " & "Время" & "_" & ActiveCell.Offset(0, -1).Value
End If
End Sub


пример приложил
Изменено: oleg355 - 06.05.2018 15:55:55
Вытащить только время из соседней ячейки с датой/временем
 
Добрый день всем !

Как из соседней слева ячейки с датой/временем  по макросу вытащить в текущую активную ячейку в диапазоне только Время в формате
hh:mm  через двоеточие ? Пример и текст макроса приложил
Код
Sub ТолькоВремя()
If Not Intersect(ActiveCell, Range("I4:I40")) Is Nothing Then
MsgBox "Макрос времени"
ActiveCell.NumberFormat = "hh:mm;@"
'ActiveCell.Value = ActiveCell.Offset(0, -1).Value ' из значения соседней ячейки выдрать только время
' и вставить его в формате hh:mm  через двоеточие в активную ячейку  как сделать ?
End If
End Sub
Условие на событие на листе MouseMove
 
Здравствуйте !

Есть событие Private Sub CommandButton1_MouseMove над кнопкой CommandButton1 на листе
Код
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
----------- код макроса  
End Sub

Как сделать так:
Если над кнопкой курсор был менее 2 сек - то MouseMove не срабатывает (код макроса уходит в Exit Sub),
Если над кнопкой курсор был более 2 сек - то MouseMove событие выполняется и срабатывает код.
Не могу додуматься как это сделать условие
Значения в столбце и колво повторений
 
Доброго вечера !

В столбце b2:b38 находятся значения - часть из них повторяются
нужно свести повторяющиеся значения и количество повторов отдельно как в примере (файл приложил)
если повторов больше равно 2
типа Значение 5  Повторов 3
      Значение 1  Повторов 4
       Значение 2  Повторов 5
      и тд
Изменено: oleg355 - 11.09.2017 00:13:41
Деактивация отдельного макроса
 
Вечер добрый
Вопрос такой   есть Sub Macros1  и  Sub Macros2
Есть ли какая команда чтобы средствами VBA  отключить (деактивировать) отдельно Macros2 во время выполнения Macros1
If  в моем случае не подходит
Чтото типа
Код
Sub Macros1 ()
Deactivate Macros2 
End Sub
Вопрос про CheckBox на форме
 
Доброго дня

Запутался в этих CheckBox  - как прописать по условиям
На форме два CheckBox  -  CheckBox1  и CheckBox2
1) При запуске формы все CheckBox  пустые  - надо чтобы при запуске CheckBox1  стал активным (с галочкой)
Это понятно - в строке инициализации формы прописать CheckBox1.Value = True

Вот это непонятно как корректно сделать:

2)Проставляем галку (клик) на CheckBox2 - пропадает галка на CheckBox1
3)Проставляем галку (клик) на CheckBox1 - пропадает галка на CheckBox2

4)Снимаем галку (клик) на CheckBox2 - появляется галка на CheckBox1
5)Снимаем галку (клик) на CheckBox1 - появляется галка на CheckBox2

Файлик во вложении
Как показать примечание поверх закрепления столбцов?
 
Добрый вечер всем !
Как справится со следующей проблемой: показать примечание поверх закрепленной области в соседней ячейке, те
1)Допустим закреплен Столбец В и в нем в ячейках показывается примечание - при прокрутке незакрепленной области листа  примечание "режется" границей закрепленной области. Как показать примечание поверх закрепления?
Преобразовать текст примечания (формируемый из текста заданных ячеек)
 
Добрый вечер всем !

Макрос формирует текст примечания в ячейках диапазона B4:B16
Текст примечания собирается из сборного текста соседних ячеек.
Пример приложил.

Но в тексте формируемого примечания необходимо удалить цифры и оставить только текст.
Вот с этим не могу справится.
Вставка текста в строке с активной ячейкой
 
Вечер добрый всем

Макрос должен вставлять текст или дописывать текст (если есть) в ячейке по адресу - строка с активной ячейкой / столбец P
но ошибка идет в строке
Cells(ActiveCell, 16).Value = Cells(ActiveCell, 16).Value & " " & "-" & " " & "Мой текст"
Что неправильно ?
Код
Sub Text()
If Not Intersect(ActiveCell, Range("A4:P16")) Is Nothing Then
'On Error Resume Next
ActiveCell.Select
'Добавляем текст в ячейки столбца P (16 столбец)
Cells(ActiveCell, 16).Value = Cells(ActiveCell, 16).Value & " " & "-" & " " & "Мой текст"
End If
End Sub
[ Закрыто] Выпадающий список с другого листа с помощью формы с listbox
 
Доброго дня всем !

Сделал выпадающий список с другого листа с помощью формы с listbox  но только часть.  Остались вопросы
 Вызвав форму с ListBox вставляем выбранное значение в ListBox в активную ячейку.
Как сделать чтобы
1)Ограничить диапазон куда вставляем значения в листе Ввод значений (B6:B40)
2)Нужно чтобы текст из List Box  НЕ ЗАМЕНЯЛ ИСХ ТЕКСТ ЯЧЕЙКИ   а
2.1 вставлялся в место где находится курсор в тексте ячейки (если выделен курсор)
2.2 вставлялся в конец текста в ячейке с пробелом от существующего текста в ячейке (если выделена просто ячейка и не выделен курсор)
3)Можно ли сделать так чтобы ФОРМА НЕ БЛОКИРОВАЛА ВЫДЕЛЕНИЕ АКТИВНЫХ ЯЧЕЕК до вставки текста ВО ВРЕМЯ ТОГО КОГДА ФОРМА НЕ ЗАКРЫТА?
4)Можно ли избавится от кнопки ВСТАВИТЬ ТЕКСТ и вставлять текст в активную ячейку ДВОЙНЫМ КЛИКОМ на выбранном тексте в ListBox ?  

Файлик прикрепил.
Завести в цикл по времени макрос сохранения
 
Добрый день всем !

как завести в цикл макрос сохранения каждые полчаса в течении суток
сейчас сделал так   прописать в книге
Как сделать код менее громоздким - добавить переменную в которой задавать интервал выполнения макроса ? и сделать код в 3-4 строки
Код
Private Sub Workbook_Open()
Application.OnTime TimeValue("00:30:00"), "CopyDir"
Application.OnTime TimeValue("01:00:00"), "CopyDir"
Application.OnTime TimeValue("01:30:00"), "CopyDir"
Application.OnTime TimeValue("02:00:00"), "CopyDir"
Application.OnTime TimeValue("02:30:00"), "CopyDir"
Application.OnTime TimeValue("03:00:00"), "CopyDir"
Application.OnTime TimeValue("03:30:00"), "CopyDir"
Application.OnTime TimeValue("04:00:00"), "CopyDir"
Application.OnTime TimeValue("04:30:00"), "CopyDir"
Application.OnTime TimeValue("05:00:00"), "CopyDir"
Application.OnTime TimeValue("05:30:00"), "CopyDir"
' и так далее по времени
 End Sub 
Как скопировать файл в папку директории ?
 
Добрый день всем !

Вопрос по макросу
1.Есть файл "Таблица.xlsm" в директории и подпапка Архив  в тойже директории
2.Макросом надо скопировать файл "Таблица.xlsm" в папку  Архив под именем "Копия_дата_время.xlsm"

Вроде операция элементарная но  есть проблемы
1.Как сохранить в подпапку Архив в директории  файла (что прописать в ThisWorkbook.Path )  ?
2. Как сделать так чтобы при сохранении не было перехода в копируемый файл?  Те при копировании оставался в исходном файле Таблица.xlsm ?
Как сделать то - после сохранения закрыть сохраненный файл - открыть исходный файл  или есть в VBA команда или функция какая чтоб без этого обойтись?

Файл с макросом сохранения прилагаю.
Изменено: oleg355 - 12.11.2016 21:12:31
Макрос забрать строки по цвету с другого листа
 
Добрый день всем !

Не могу решить задачу с макросом как сделать

Есть 3 листов на книге
Таблица, Зеленый, Желтый
На листе Зеленый по макросу нужно забирать зеленые строки с данными (вырезать) с листа Таблица в лист Зеленый(вставить)
На листе Желтый по макросу нужно забирать желтые строки с данными с листа Таблица в лист Желтый

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


В листе Таблица строки с данными закрашиваются в диапазоне таблицы A4:I5003 выбранным цветом - эти макросы работают.
Зеленый Interior.Color = RGB(153, 255, 204)
Желтый  Interior.Color = RGB(255, 255, 153)
Изменено: oleg355 - 07.11.2016 21:22:38
Страницы: 1
Наверх