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

Страницы: 1 2 3 След.
Всплывающая подсказка для кнопки с макросом
 
Может кому пригодится. Развил идею V использовать для создания подсказки к кнопкам с макросом элементы ActiveX.
Всплывающая подсказка для кнопки с макросом
 
Спасибо V. Идея понятна, использовать ActiveX.
Всплывающая подсказка для кнопки с макросом
 
Может кто-нибудь решил задачу всплывающих подсказок у кнопки с макросом. Если кнопки миниатюрны и на них невозможно разместить поясняющий текст, то пользователю проекта могла бы помочь всплывающая подсказка при наведении курсора на кнопку, как это есть даже в самом Excel в меню. Если, к примеру, использовать гиперссылку, которая создает подсказку у кнопки, то назначенный кнопке макрос слетает. Можно еще попытаться создавать примечания у ячеек где расположена кнопка, но и это не подходит, ибо не всегда кнопки совпадают с границами ячеек.
Изменено: Дорожный - 04.10.2024 07:49:10
Как сделать автоматический перенос названия каждого блока
 
Можно сделать реестр названий блоков. Ведь названия блоков, скорее всего, одни и те же. Затем, если решать задачу в VBA, то логика такая: каждая строка данных сверяется с реестром, и если есть совпадение (строгое), то эта строка и есть название блока, а все что ниже - это строки блока, до следующего совпадения с реестром. Если решать в формулах , то тут не подскажу, но, скорее всего, ВПР в формуле массива.
Excel не справляется с расчётами 14млн. строк
 
Макросом, если строк не хватает на одном листе, можно вставить ещё.
Раскрывать/закрыть строки, содержащие контактные данные компании
 
А чем плоха Группировка строк? или Примечание? на худой конец Скрыть-Отобразить строки?
Запись текста в ячейки с определенным цветом
 
Тогда вот так
Код
Sub Êíîïêà4_Ùåë÷îê()
For Each i In ThisWorkbook.Worksheets("Ëèñò1").UsedRange
    If i.Interior.Color = 15773696 Then i.Value = "Ñëîâî"
Next i
End Sub
Запись текста в ячейки с определенным цветом
 
Вот можно попробывать
Код
Sub Кнопка4_Щелчок()
For Each i In ThisWorkbook.Worksheets("Лист1").UsedRange
    If i.Interior.Color <> xlNone And i.Interior.Color <> 16777215 Then i.Value = "Слово"
Next i
End Sub
Как ускорить ввод данных из формы в ячейку
 
Удалите обработчики событий с TextBox-ов и перенесите присвоение данных ячейкам на событие кнопки "Внести"
Код
Private Sub CommandButton1_Click()
Sheets("Лист1").[A3] = Me.TextBox1
Sheets("Лист1").[B5] = Me.TextBox2
End Sub
Правда, не нужно забывать, что данные будут в текстовом формате.
Изменено: Дорожный - 17.01.2020 05:30:47
Макрос для выпадающего списка, Макрос для выпадающего списка, печать макросом,
 
Сделайте книгу с примером, а так кто на ком стоял не поймешь
не работает маркер автозаполнения, отмена в файле с поддержкой макросов, после создания макросов для мультисписка не работают маркер автозаполнения (протягивание текста) и отмена (ctrl+Z)
 
Добавьте в начале кода обработчика события Worksheet_Change такую строку:
Код
If Target.Cells.Count > 1 Then Exit Sub
VBA. Остановить макрос, если пустое значеие и запустить следующий
 
Код
If Cells(i, "F:F") = "" Then Invoice_Report : Exit Sub
Переделка макроса распределяющий фразы по столбцам
 
Код
Sub РазбиениеПоСимволам()
Dim LastRow As Long, i As Long, Arr(), Arr3, Arr10, x3 As Long, x10 As Long
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    Arr = Range(Cells(5, 1), Cells(LastRow, 1)).Value
    ReDim Arr3(1 To UBound(Arr), 1 To 1)
    ReDim Arr10(1 To UBound(Arr), 1 To 1)
    For i = 1 To UBound(Arr)
        If Len(Arr(i, 1)) <= 4 Then
            x3 = x3 + 1
            Arr3(x3, 1) = Arr(i, 1)
        Else
            x10 = x10 + 1
            Arr10(x10, 1) = Arr(i, 1)
        End If
    Next
    Range("B5").Resize(x3, 1).Value = Arr3
    Range("C5").Resize(x10, 1).Value = Arr10
End Sub
Координаты скопления значений, поиск координат заданных значений
 
Вот на VBA вариант попробуйте. Но нужно будет, конечно, под конкретные условия прописать адрес данных в строке диапазона действия цикла For Each
Код
Sub ПоискКоординатСкопления()
Dim x, n, nMax As Integer, ПредЗнач, КоорНач, КорН, КорК, Знач As Variant
For Each x In Range(Cells(3, "D"), Cells(Cells(80000, "D").End(xlUp).Row, "D"))
    If x.Value <> ПредЗнач Then n = 1: КоорНач = x.Offset(0, -1).Value: КоорКон = КоорНач
    If x.Value = ПредЗнач Then n = n + 1: КоорКон = x.Offset(0, -1).Value
    ПредЗнач = x.Value
If n > nMax Then nMax = n: Знач = x.Value: КорН = КоорНач: КорК = КоорКон
Next x
[F2] = Знач
[G2] = КорН & "-" & КорК
End Sub
Макрос удаления старых строк
 
Код
Sub УдалитьСтроки()
Сегодня = CDate(Trim(Left(Now, InStr(Now, " "))))
m = ActiveSheet.UsedRange.Rows.Count
For i = 1 To m
If Cells(i, 4) < Сегодня And IsEmpty(Cells(i, 4)) = False Then Rows(i).Delete: m = m - 1: i = 0
Next i
End Sub
Кнопочке, которой присвоите выполнение данного макроса не забудьте во свойствах переключить на "не перемещать и не изменять размер".
сменный график работы 2 через два или день ночь отсыпной выходной, годовое планирование графика сменного персонала
 
Это вы хотите всю жизнь запланировать, но это невозможно, жизнь всегда преподнесет что-то неожиданное, ну хоть в виде кирпича на голову. Я бы на вашем месте применил макрос, который бы пересчитывал весь график целиком при наступлении каких-то ожидаемых и не ожидаемых событий в виде отпусков, прогулов, отгулов, больничных, увольнений, приёмов и.т.д. Узнали, например, что Иван Иваныч Иванов на больничном, указали в графике условным обозначением его больничный, нажали кнопочку и весь график перелицевался с учетом больничного Иванова.
Заполнение значения в ячейку из другой ячейки (макрос)
 
С этим событием (селектирование любой ячейки) вроде как проходит
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
[c8] = [B6]
End Sub
Окрашивание ячеек в зависимости от выбранного ФИО в строке, макрос
 
Для vicm
Выполнение макроса по условию.
 
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If [C1]=1 then
  тело макроса
end if
end sub
Вставка массива непустого массива в диапазон: вставляется пустота
 
Как я понимаю, чтобы сработал метод insert нужно сначала загнать что-то в буфер обмена (например Copy). Вообще-то в диапазон на листе двумерный и одномерный массив можно вывести просто оператором "=".
Макрос преобразования списка в шаблон на отдельный лист по условию., не получается формулами
 
Макросом в Excel можно выполнить почти всё. Другое дело сколько времени займет его написание. Алгоритм макроса как мне представляется должен быть таким: на чистом месте, внизу под уже имеющимся бланками, отрисовывается новый бланк описи на двадцать строк. В него заносятся данные из списка, но длинные наименования объектов автоматически переносятся на несколько строк бланка описи. При этом, естественно, что в бланк описи может не войти 20 позиций. Затем необходимо число позиций, разместившихся на бланке, превратить в пропись. После заполнения данного бланка процесс повторяется до завершения просмотра всего списка. Создание чистого бланка можно сделать методом копирования шаблонного или отрисовывать каждый раз программой. Текст в столбце "Нименование" должен быть моноширным для адекватного разбиения наименования объектов по строкам.  
Перенос строки с одного листа в другие по условию
 
Вот по колхозному зато работает. Дополните код нужными столбцами по образу и подобию. Нужно иметь в виду, что данный макрос ищет точное совпадение имени вкладки и геозоны. То есть регистр букв должен совпадать. Вкладок можно добавлять сколько угодно.
Код
Sub Проба1()
конец = Sheets("БД").Cells(500000, 1).End(xlUp).Row
For Each i In Range(Sheets("БД").Cells(2, 2), Sheets("БД").Cells(конец, 2))
    Геозона = i.Value
    For Each Вкладки In ThisWorkbook.Sheets
        If Геозона = Вкладки.Name Then
            With ThisWorkbook.Sheets(Геозона)
            конецГеозона = .Cells(500000, 1).End(xlUp).Row + 1
            y = i.Offset(0, -1)
            .Cells(конецГеозона, 1) = i.Offset(0, -1)
            .Cells(конецГеозона, 2) = i
            .Cells(конецГеозона, 3) = i.Offset(0, 1)
            .Cells(конецГеозона, 4) = i.Offset(0, 2)
            'Занесите сюда все столбцы по образу и подобию как показано
            
            End With
        End If
    Next Вкладки
Next i
End Sub
Выделить строку, если в ней есть определенные совпадения
 
Условным форматированием можно попробовать. В подменю "Использовать формулу для определения форматируемых ячеек".
Выбор действия в зависимости от текущей даты в сравнении с десятком различных дат., ускорить формулу или переделать в макрос
 
Ну тут можно применить конструкцию Select Case с параметром текущей даты. И всё посадить на обработчик события Worksheet_Change.
Макрос на переход в нужную ячейку
 

Можно ещё вот так сделать под правую кнопку мыши:  

Код
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Строка = InputBox("Введите номер строки для перехода", "Переход", 0)
If Строка = Empty Then Exit Sub
ActiveWindow.ScrollRow = CCur(Строка) + 12
ActiveWindow.ScrollColumn = 1
End Sub

Кроме перехода к нужной строке можно будет переходить к первому столбцу с любой точки листа.  
Изменено: Дорожный - 23.10.2018 06:44:09
Макрос автоматического разрыва страниц
 
Если вы печатаете всегда на одном принтере, то отформатируйте страницу (масштаб, поля и прочее) так, чтобы бланк целиком гарантированно входил на страницу и не мучайтесь.  
Макрос календаря с возможностью выбора только года и месяца (без даты)
 
Если не хотите применять Формы, то можно например сделать на таких элементах управления как Раскрывающийся список или просто Список. При двойном щелчке по ячейке срабатывает событие Worksheet_BeforeDoubleClick запускающее назначенный ему макрос, который будет перемещать эти списки к активной ячейке. Убирать их от ячейки можно назначив макрос самим спискам где прописать их перемещение в дальний угол листа после выбора месяца. Я так делаю с другой информацией и выходит неплохо. Эффект как от выпадающих списков.  
Запуск макроса при одном нажатии на ячейку
 
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 Then
    If Not Intersect(Target, [h10:H11,L10:L11]) Is Nothing Then    'адрес ячейки
        Application.EnableEvents = False
        UserForm1.Show
        Application.EnableEvents = True
    End If
End If
End Sub
Изменено: Дорожный - 30.08.2018 09:30:55
Как правильно стилизовать документ: заготовить шаблон или форматировать уже после внесения данных?
 
Я для отчетов пишу такие макросы которые сами создают отчетные формы. Сами с чистого листа прорисовывают нужные таблицы, форматы, шрифты, цвета и сами же заполняют их данными. Естественно, размеры отчетных таблиц выводятся из первичного анализа данных или в процессе их обработки. Да, это трудоемко писать такие макросы, но зато гибко и можно учесть множество нюансов.
Как узнать адрес ячейки из которой только что вышел пользователь
 
Вот простенько, но работает.
Код
Private t As Variant
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox t
t = Target.Address
End Sub
Страницы: 1 2 3 След.
Наверх