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

Страницы: 1 2 След.
Хранение контролов формы в словаре
 
Вечер добрый!
Не раз видел и сам хранил контролы (созданные программно) на форме в массивах, что бы перехватывать их события. А сейчас думаю сделать их хранение в коллекции или например в словаре.
Что думаете, события контролов будут перехватыватся?
Можно ли сделать уникальный процесс Excel, который будет работать особняком?
 
День добрый!

На сколько мне известно открывающиеся новые книги "прилипают" к активному окну (посредством hWnd?).

Как решение в лоб - править в реестре для каждого расширения Excel ключ для открытия файлов (%1 - в новом окне).
А можно ли сделать уникальный процесс Excel который будет работать особняком?
Поиск активного листа в момент открытия книги
 
День добрый!
При открытии книги события отрабатываются в следующем порядке: WB_open>WB_activate>Window_activate.
Но ни в одном из событий я не смог отловить лист выделенный в данный момент (событие Worksheet_activate не наступает).
Вот собственно и вопрос - есть ли возможность отследить "активный" лист в каскаде событий открытия книги?
Привязка формы(немодальной) к активной книге
 
Добрый вечер, форумчане.

Помогите разобраться со следующей проблемой.
В примере - открываем WB1, открываем WB2. После запуска книги RUN окно последней книги (RUN) прячем (visible=false), и показываем форму в немодальном режиме.

Вот вопрос: последнее активное окно перед запуском книги RUN - окно с книгой WB2 и к нему привязывается форма(или книга?). Если закрыть книгу WB2 сразу закроется и книга RUN. Как обойти ограничение?

Решено.
Перед показом формы активировать книгу из которой выполняется код.
Код
thisworkbook.activate
userform1.show vbmodeless
Изменено: tsutse - 03.02.2020 20:04:39
Заполнение listbox диапазоном умной таблицы используя свойство rowsource.
 
Вечер добрый!
Подскажите пожалуйста, можно ли заполнить listbox диапазоном умной таблицы находящейся в другой книге используя свойство rowsource?
Совместное использование методов .find и .findnext
 
Добрый вечер, форумчане!

Нужна ваша помощь.
Думаю что ошибка кроется в последующем использовании find после findnext.

Имеем: в первом столбце таблицы находятся ну скажем параграфы.
1. Макрос в первом проходе находит наибольшее количество символов в каждой ячейке.
2. Во втором проходе макрос ищет эти ячейки.
3. Затем макрос ищет вышестоящий параграф, в который входит тот, с которым мы работаем в данный момент.
С пунктами 1 и 2 макрос справляется, но если раскомментировать 2 строки, макрос срабатывает только один раз, показывая первое найденное значение и уходит в цикл.

Читал что можно вместо findnext можно использовать find но с параметром after. Подскажите пожалуйста как правильно ввернуть в данный код.
Код
Option Explicit
Sub test2()
Dim ACTrng As Range, ACTcll As Range, STRlen&, STRlenMAX&, FSTrez As String, FNDpar As Range

Set ACTrng = ThisWorkbook.Worksheets("Лист2").ListObjects("TAB_3").ListColumns(1).DataBodyRange

With ThisWorkbook.Worksheets("Лист2")

'1й проход - находим ячейки с наибольшим кол-вом символов
Set ACTcll = ACTrng.Find("*", , xlValues, xlWhole, xlByColumns)
    STRlenMAX = Len(.Cells(ACTcll.Row, ACTcll.Column))
       
        If Not ACTcll Is Nothing Then
            FSTrez = ACTcll.Address
                
                Do
                    Set ACTcll = ACTrng.FindNext(ACTcll)
                    STRlen = Len(.Cells(ACTcll.Row, ACTcll.Column))
                        If STRlen > STRlenMAX Then STRlenMAX = STRlen
                Loop Until FSTrez = ACTcll.Address
        End If

'2й проход - находим самую нижнюю в древе подсборку
Set ACTcll = ACTrng.Find("*", , xlValues, xlWhole, xlByColumns)
    If Not ACTcll Is Nothing Then
            FSTrez = ACTcll.Address
                Do
                    Set ACTcll = ACTrng.FindNext(ACTcll)
                    STRlen = Len(.Cells(ACTcll.Row, ACTcll.Column))

                        If STRlen = STRlenMAX Then
                            MsgBox ACTcll
                            
                            'Set FNDpar = ACTrng.Find(Left(ACTcll, STRlen - 2), , xlValues, xlWhole, xlByColumns)
                            'MsgBox FNDpar
                        End If
                        
                        
                Loop Until FSTrez = ACTcll.Address
        End If
End With
End Sub
Изменено: tsutse - 05.02.2019 02:09:14
Поиск совпадений в текста в ячейке и нахождение ее координат
 
Добрый вечер!

Никак не могу укротить метод find
Вроде и по хелпу делаю, но что то не получается.
Код
Option Explicit
Sub kkk()
Dim fcell As Range

Set fcell = ThisWorkbook.Worksheets("Лист1").Find("фыва", , xlValues, xlPart).Row
MsgBox fcell
End Sub

Нужно найти совпадение в тексте ячейки и найти ее координаты.
В чем ошибка применения If / Else / End If&
 
Добрый вечер!

Поясните пожалуйста, почему не работает следующая конструкция?
Код
Private Sub Workbook_SheetActivate(ByVal Sh As Object)

If ActiveSheet.Name = "MB" Then user_menu.Show
Else
user_menu.Hide
end if
End Sub
Изменено: tsutse - 22.01.2019 21:36:54
Выделить последнюю строку умной таблицы.
 
Добрый вечер!

Собственно сама проблема описана в теме.
Пытаюсь выделить ее так:
Код
ThisWorkbook.Worksheets("MB").ListObjects("tech_vis").DataBodyRange.Row(ListRows.Count).Select 
Поправьте пожалуйста.
Обработка события Worksheet_Change
 
Доброго времени суток!

Делаю подобие зависимых таблиц.
Так при изменении таблицы на листе MB соответственно меняется и таблица на листе MB_back.
Под изменениями имею ввиду: при удалении (добавлении) строки (строк) на листе MB - удалялись (добавлялись) и соответствующие строки на листе MB_back.
Светлых мыслей, кроме как пронумеровать строки в доп. столбце, не появилось.

Код находится в модуле листа и добавляет и удаляет строки, но вот как только я хочу пронумеровать по новой Столбец 4 на листе MB (после вставки строки образуется разрыв из пустых ячеек) эксель вылетает с ошибкой.

Т. е. в середине выполнения процедуры опять срабатывает событие изменения листа?
Нумерация строк сквозь объединенные ячейки
 
Добры вечер!

Пытаюсь сделать нумерацию строк не учитывая объединенные ячейки, подскажите что я делаю не так?
И объясните пожалуйста как правильно ставить перенос строки и разделитель ":", т. к. ставлю больше по наитию, чем по знанию....(((
Код
Sub dfs()
Dim i%, n%, ilastrow&, sh As Object

Set sh = ThisWorkbook.Worksheets("Лист1")

n = 1
ilastrow = sh.Cells(Rows.Count, 3).End(xlUp).Row
'ilastrow = ilastrow + 1
For i = 8 To ilastrow
  If .Cells(i, 2).MergeCells = True Then i = i + 1: _
    ElseIf sh.Cells(i, 2).MergeCells = False Then sh.Cells(i, 2) = n: n = n + 1: _
    With sh.Cells(i, 2): _
  .Font.Bold = False: _
  .HorizontalAlignment = xlCenter: _
  .VerticalAlignment = xlCenter: _
    End With
    End If
Next
End Sub
Изменено: tsutse - 27.12.2018 22:41:04
Вставка пустых строк после повторяющихся данных в ячейках
 
Добрый вечер.

Сделайте пожалуйста макрос для добавления пустых строк после повторяющихся значений и не повторяющихся начиная с ячейки E9 и до последней ячейки с данными.
Изменено: tsutse - 25.12.2018 20:17:05
Ошибка при выравнивании текста в объединенной ячейке
 
Вечер добрый!
Не получается выровнять текст в объединенной ячейке((( Как это сделать правильно?
Код
Sub merge()

Dim iLastRow%, perv As Object, wtor As Object

Set perv = ThisWorkbook.Worksheets("Первый")
Set wtor = ThisWorkbook.Worksheets("Второй")

With wtor
    iLastRow = .Cells(Rows.Count, 1).End(xlUp).Row
End With
    iLastRow = iLastRow + 1

wtor.Range(wtor.Cells(iLastRow, 1), wtor.Cells(iLastRow, 3)).merge
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
    .Cells(iLastRow, 1) = "fgdfgd"
     
End Sub
Изменено: tsutse - 24.12.2018 22:10:31
Вставка определенного количества ячеек вправо на лист
 
Добрый вечер!

Проясните пожалуйста - как копировать и вставлять вправо более 2х ячеек?
Код
Sub qewq()

Dim x, c, i As Integer

c = 2

    For x = 2 To Cells(Rows.Count, 3).End(xlUp).Row Step 1
    If Cells(x, 3) = "Овощи" Then ThisWorkbook.Worksheets("Первый").Range(Cells(x, 3).Offset(0, 1), Cells(x, 3).Offset(0, 2), Cells(x, 3).Offset(0, 6)).Copy
    ThisWorkbook.Worksheets("Второй").Range("B3").Paste
    c = c + 1
    Next

'With ThisWorkbook.Worksheets("Второй")
'For i = .Cells(Rows.Count, 2).End(xlUp).Row To 2 Step -1
    'If .Cells(i, 2) = "" Then .Rows(i).EntireRow.Delete
'Next
'End With

End Sub
Операция выполняется не на том листе
 
Добрый день, форумчане!

Помогите разобраться с данным кодом.
При запуске модуля 1  на активном листе "Первый"
Код
With ThisWorkbook.Worksheets("Второй")
For i = Cells(Rows.Count, 4).End(xlUp).Row To 20 Step -1
    If Cells(i, 4) = "" Then Rows(i).EntireRow.Delete
стирает строки на листе "Первый" вместо того что бы удалить их на листе "Второй".
В чем моя ошибка?
Скрытие строк и столбцов до конца листа
 
Доброго времени суток, форумчане!

Хочу скрыть строки и столбцы до конца листа, ан эксель окаянный не хочет скрывать столбцы.
Подскажите, где тут ошибка?
Код
    r = Cells(Rows.Count, 4).End(xlUp).Row
    Rows(r + 1 & ":1048576").Hidden = True
            
    c = Cells(8, Columns.Count).End(xlToLeft).Column
    Columns(c + 1 & ":16384").Hidden = True
Формула =ЕСЛИ((И....)) возвращает не то что ожидается.
 
Доброго времени суток, форумчане!

Помогите пожалуйста в следующем вопросе - не могу понять почему формула
Код
=ЕСЛИ(И(D6;E6)="";"Истина";"Ложь") 
при обеих пустых ячейках выдает #ЗНАЧ!, а при любой не пустой - как и должно быть, "ложь"?
Заполнение ячеек и стирание из них значений правым кликом по ячейке
 
Вечер добрый, форумчане!

Есть такой код -
Код
Private Sub Worksheet_BeforerightClick(ByVal Target As Range, Cancel As Boolean)

    If Not Intersect(Target, Range("B8")) Is Nothing Then Range("Techtab[МСК]") = "a"
    Cancel = True
  
End Sub

Будьте добры, подскажите как стереть значения в столбце "МСК" при повторном клике на ячейку B8?

Или даже так - если весь диапазон имеет значение "а" - то стереть данные в нем.
Изменено: tsutse - 16.12.2018 21:54:19
Как получить SpecialCells(...) для диапазона, состоящего из одной ячейки?
 
Доброе утро форумчане!

Помогите разобраться, с данным фрагментом кода...
Код
Sub qwe()
  Const HRow = 8

Dim rg As Range

Set rg = Cells(Rows.Count, 2).End(xlUp) :     If IsEmpty(rg) Then Set rg = rg.End(xlUp)
  If rg.Row = HRow Then MsgBox "Нет отмеченных строк!", vbCritical, "Завершение работы": End
Макрос ищет в столбце не пустые ячейки в столбце 2 и производит с ними действия.
Если целевой столбец пуст - выводится сообщение.
А вот если столбец 2 имеет единственное значение в самой верхней ячейке (строка 9) - вылетает ошибка.
Не совсем понятно что именно возвращается функцией IsEmpty.
Изменено: tsutse - 16.12.2018 14:42:29
[ Закрыто] Наполнение листами новой книги макросом
 
Уважаемые форумчане!

Освежаю старый макрос, который ранее наполнял рабочую книгу листами.
Хочу теперь перенести копирование новых листов в новую книгу.
Как их правильно спарить?
Код
Sub qwe()
Application.ScreenUpdating = False
Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet
Dim i As Integer, lr As Integer, w As String


Set ws1 = ThisWorkbook.Worksheets("ТТ")
Set ws2 = ThisWorkbook.Worksheets("МСК")
Set ws3 = ThisWorkbook.Worksheets("Back")


w = Left(ActiveWorkbook.Name, InStrRev(ActiveWorkbook.Name, ".") - 1)
    
    Workbooks.Add (1)
        With ActiveWorkbook
            .SaveAs Filename:=ThisWorkbook.Path & "\МСК " & w & ".xls"
            '.Close True
        End With

lr = ws1.Cells(Rows.Count, 4).End(xlUp).Row
With ws2
For i = 9 To lr
    If ws1.Cells(i, 2) <> "" Then
    ws2.Copy , Worksheets(Worksheets.Count)
    wsC = Sheets.Count
    Sheets(wsC).Name = ws1.Cells(i, 2)
    Sheets(wsC).Cells(6, 43) = ws1.Cells(2, 16)
    Sheets(wsC).Cells(6, 1) = ws1.Cells(i, 6)
    Sheets(wsC).Cells(10, 1) = ws1.Cells(i, 14)
    Sheets(wsC).Cells(6, 23) = ws1.Cells(4, 16)
    
      
    End If
Next i

End With
Application.ScreenUpdating = True
End Sub
Создание новой книги макросом
 
Уважаемые форумчане, поправьте пожалуйста!

Пытаюсь создать новую книгу в текущей папке и переименовать ее с префиксом.
Не хочет присваивать имя.
Код
Sub create()
Dim w As String

Set w = ActiveWorkbook.Name
    Workbooks.Add (1)
        With ActiveWorkbook
            .SaveAs Filename:=ThisWorkbook.Path & "\МСК_" & w & ".xls"
        End With
End Sub
Наполнение новой книги листами из текущей.
 

День добрый!

Помогите доработать этот макрос, что б он сохранял листы в новую книгу, а не в текущую.

Код
Sub qwe()
Application.ScreenUpdating = False
Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet
Dim i As Integer, lr As Integer

Set ws1 = ThisWorkbook.Worksheets("ТТ")
Set ws2 = ThisWorkbook.Worksheets("МСК")
Set ws3 = ThisWorkbook.Worksheets("Back")

lr = ws1.Cells(Rows.Count, 4).End(xlUp).Row
With ws2
For i = 10 To lr
    If ws1.Cells(i, 1) <> "" Then
    ws2.Copy , Worksheets(Worksheets.Count)
    wsC = Sheets.Count
    Sheets(wsC).Name = ws1.Cells(i, 2)
    Sheets(wsC).Cells(6, 43) = ws1.Cells(2, 16)
    Sheets(wsC).Cells(6, 1) = ws1.Cells(i, 6)
    Sheets(wsC).Cells(10, 1) = ws1.Cells(i, 14)
    Sheets(wsC).Cells(6, 23) = ws1.Cells(4, 16)
    
    
    End If
Next i

End With
Application.ScreenUpdating = True
End Sub
Изменено: tsutse - 14.12.2018 15:36:40
Создание файла в текущей папке и вставка в него N-го количества бланков с заполнением
 
Доброго времени суток, товарищи.

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

Нужно что бы создавался новый xml файл в текущей папке, переименовывался (к имени родительского файла добавлялся префикс ну скажем "АБВ"), и туда копировались бланки, заполнялись значениями.

Код
Sub qwe()
Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet
Dim i As Integer, lr As Integer


Set ws1 = ThisWorkbook.Worksheets("ТТ")
Set ws2 = ThisWorkbook.Worksheets("МСК")
Set ws3 = ThisWorkbook.Worksheets("Back")



lr = ws1.Cells(Rows.Count, 4).End(xlUp).Row
With ws2
For i = 10 To lr
    If ws1.Cells(i, 1) <> "" Then
    ws2.Copy , Worksheets(Worksheets.Count)
    wsC = Sheets.Count
    Sheets(wsC).Name = ws1.Cells(i, 2)
    Sheets(wsC).Cells(6, 43) = ws1.Cells(2, 16)
    Sheets(wsC).Cells(6, 1) = ws1.Cells(i, 6)
    Sheets(wsC).Cells(10, 1) = ws1.Cells(i, 14)
    Sheets(wsC).Cells(6, 23) = ws1.Cells(4, 16)

Next i
End With
End Sub

"Галка" по правому клику в определенном столбце умной таблицы
 
Вечер добрый.
На просторах тырнета нашел такой код:
Код
Private Sub Worksheet_BeforerightClick(ByVal Target As Range, Cancel As Boolean)
 With Target
     If .Column = 2 Then
         Select Case .Value
                 Case Is = "a"
                     .Font.Name = "Marlett"
                     .Value = ""
                 Case Else
                     .Font.Name = "Marlett"
                     .Value = "a"
         End Select
     Cancel = True
     End If
     
      If .Column = 3 Then
         Select Case .Value
                 Case Is = "a"
                     .Font.Name = "Marlett"
                     .Value = ""
                 Case Else
                     .Font.Name = "Marlett"
                     .Value = "a"
         End Select
     Cancel = True
     End If
     
 End With
End Sub

Помогите пожалуйста его привязать к ну скажем Столбец1 и Столбец2 умной таблицы Таблица33.

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

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

Болванка и пример в файле.Бюджет - 300р.
Вставка столбца из "умной таблицы" на другой лист со вставкой строк, Вставка столбца из "умной таблицы" на другой лист со вставкой строк
 
Доброго времени суток, товарищи!

Нужна помощь форума.

С Листа 1 необходимо скопировать Столбец1 Таблицы1 и вставить на лист 2 в ячейку В6 со сдвигом строк вниз макросом.

Пробовал записывать рекодером - но там сдвижка происходит за счет ячеек и бланк разрушается.
Создание новой книги и копирование в нее выбранного листа макроом, Создание новой книги и копирование в нее выбранного листа макросом
 
Доброго времени суток, товарищи.
Нужна ваша помощь, не могу понять что не так.
Ругается на  -  Set wb_name = ThisWorkbook.Name
Код
Sub New_wb()
    Dim New_wb As Workbook
    Dim wb_name As String
            
    Set New_wb = Workbooks.Add
    'New_wb.Activate
    Set wb_name = ThisWorkbook.Name
    
    New_wb.SaveAs Filename:=(ThisWorkbook.Path & "\" & "МСК" & " " & "wb_name" & ".xls")
    Sheets("МСК").Copy After:=Workbooks("МСК" & " " & "wb_name" & ".xls").Sheets(1)
    'New_wb.Close
End Sub
Суммирование значений из массива по условию
 
Доброго времени суток, товарищи.
Столкнулся на днях с одной проблемой, шуршение поиском к решению не привело, потому прошу помощи у титанов форума.
Дан массив и необходимо при совпадении ячейки с текстом и ячейки с текстом из массива просуммировать все значения находящиеся правее ячейки с текстом.
В примере показал условно, как это должно выглядеть.
Файл приложил.
Суммирование градусов, минут, секунд по шагу.
 
Доброго времени суток, товарищи.
По долгу службы приходится иногда суммировать величины углов, вот сделал подобие калькулятора, для суммирования через определенный шаг.
Но есть одно упущение - формулой не запрещено отображение 60 минуты в соответствующем столбце.
Прошу помощи знатоков, как избавиться от сего недоразумения?)
Перенос значений ячеек по помеченным строкам на скопированный лист
 
Доброго времени суток, товарищи.
Поискав по форуму, не нашел похожей темы, очень нужна ваша помощь.
Не получается реализовать копирование значений из листа "МВ" с помеченных строк в копируемые листы "МСК".
Страницы: 1 2 След.
Наверх