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

Страницы: 1 2 3 След.
Как установить абсолютную ссылку на номер ячейки, заданный через макрос
 
Sanja, благодарю за предложение, пока ещё не дорос до этого :) Но стало интересно, не думал раньше об этом...
msi2102, благодарю!
Как установить абсолютную ссылку на номер ячейки, заданный через макрос
 
Здравствуйте!
Подскажите пож-та, как можно програмно установить абсолютню ссылку в следующем случае:
Я прописал код для нахождения последней заполненной ячейке в столбце - "Nstroki"
Код
Dim Nstroki As Long
Nstroki = Sheets("Фильтр").Cells(Rows.Count, "A").End(xlUp).Row - 5
Затем я вставил его в формулу:
Код
.FormulaR1C1 = "=ROW(Фильтр!R3C4:R[" & Nstroki & "]C4)"
После выполнения макроса формула выходит в следующем виде:
=СТРОКА(Фильтр!$D$3:$D2890)
- при этом строка 2890 не закрепляется знаком "$"

Как её можно закрепить в коде?:
Код
.FormulaR1C1 = "=ROW(Фильтр!R3C4:R[" & Nstroki & "]C4)"
Благодарю за помощь!
Перемещение области выделения
 
Добрый день, подскажите пож-та, а как можно продолжить выделение вправо от выделенного диапазона, скажем на 3 столбца?
Я задаю выделение диапазона:
Код
Range(Cells(5, 1), Cells(Rows.Count, Cells(5, 1).Column).End(xlUp)).Select
И мне нужно увеличить диапазон выделения на 3 столбца вправо...
Следующий код не подходит, т.к. переносит выделение, а не выделяет от уже выделенного вправо:
Код
Selection.Offset(0, 3).Select
Пока вопрос набирал, методом логического тыка получил рабочий вариант...
Код
Range(Selection, Selection.Offset(0, 3)).Select
Благодарю за тему! :)
как в VBA отследить вставку/удаление строки (столбца)?
 
sokol92, примного благодарен, что отозвались...

Сейчас строку вставляет без вывода сообщения - что нужно!
Но при открытии также даёт вставить столбец, как и прежде. Со второго раза - уже выводит сообщение...

Применил макрос на работе... Там работает с первой попытки вставить столбец... Видно дома офис по старше...
Вопрос можно закрыть. Примного благодарен за помощь!
Изменено: Владимир Самара - 17.06.2019 21:41:27
как в VBA отследить вставку/удаление строки (столбца)?
 
sokol92, доброго здравия! :)

После практики выполнения макроса (#22) всплыл такой момент...
После открытия книги, когда первый раз пробуешь вставить столбец - он вставляется без отображения сообщения (MsgBox).
Со второго раза, сообщение выходит...

Касательно удаления столбца - тут всё хорошо. Сообщение выводится с первой попытки (после открытия книги).

Вопрос... Можно поправить макрос для вставки столбца (чтобы сообщение отображалось сразу) или это какая-то внутренняя особенность ?

И ещё один момент касательно макроса для вставки столбца...
Когда вставляешь строку, MsgBox также вызывается (хотя для вставки строки вызов MsgBox не нужен)... При удалении строки такого не происходит.
Если не напряжно помочь, - мерси боку!!!
Если проблемно, попробую при открытии книги вставить столбец где-нибудь подальше за пределами расчётных данных...
Потом уже должно обрабатываться, как надо...
Брать со смещением данные из календарного диапазона
 
Sanja, работает! Примного благодарен за помощь!
Брать со смещением данные из календарного диапазона
 
Sanja, типо да... записывал через макрорекордер: "=RC[2]-RC[1]"
Теперь вижу, что формула потеряла распознование столца... Подставлять учился на других примерах и не всё до конца понял...
Брать со смещением данные из календарного диапазона
 
Что-то я с таким не сталкивался... У меня после выполнения макроса, смещение происходит не вправо, а вниз...
Должна быть формула типо: D2=F2-E2, а выходит: D2=D4-D4
Брать со смещением данные из календарного диапазона
 
Sanja, благодарю, пробовал... Ругается - ошибка 1004...
Брать со смещением данные из календарного диапазона
 
Добрый день,
Подскажите пож-та, как в формулу подставить адрес ячеек, смещённых от активной ячейки вправо...
У меня не получается задать адрес для переменных А и В - VBA ругается...
Код
Sub Макрос()
Dim A, B
'Определение адреса ячеек, смещённых вправо от активной:
    A = Range(ActiveCell.Offset(0, 1))
    B = Range(ActiveCell.Offset(0, 2))
    ActiveCell.FormulaR1C1 = "=R[" & B & "]C-R[" & A & "]C"
End Sub
Подскажите пож-та, как А и В можно задать... Благодарю!
как в VBA отследить вставку/удаление строки (столбца)?
 
sokol92, примного благодарен за помощь!  
как в VBA отследить вставку/удаление строки (столбца)?
 
Странно, но почему то, когда изменил часть кода и для вставки столбца... он отказывается работать... При удалении выводится предупреждение, а при вставке нет:
Код
Private Sub q1_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
   If ActiveWorkbook.Name = ThisWorkbook.Name And ActiveSheet.Name = Sheet2.Name Then
     If MsgBox("Вы хотите удалить столбец", vbYesNo + vbQuestion) <> vbYes Then
       CancelDefault = True
     End If
   End If
End Sub

Private Sub q2_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
 If ActiveWorkbook.Name = ThisWorkbook.Name And ActiveSheet.Name = Sheet2.Name Then
   If MsgBox("Вы хотите вставить столбец", vbYesNo + vbQuestion) <> vbYes Then
     CancelDefault = True
   End If
 End If
End Sub
как в VBA отследить вставку/удаление строки (столбца)?
 
sokol92, понятно... благодарю!
как в VBA отследить вставку/удаление строки (столбца)?
 
Добрый вечер, пробовал применить предложение Sokol92 в #17 посте...
Код
Private Sub q1_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
  With ThisWorkbook.Sheets("Лист1")
   If MsgBox("Вы хотите удалить столбец", vbYesNo + vbQuestion) <> vbYes Then
     CancelDefault = True
   End If
  End With
End Sub

Наверное не так подобрал условие... With ThisWorkbook.Sheets("Лист1")
А как можно ещё попробовать?
как в VBA отследить вставку/удаление строки (столбца)?
 
sokol92, благодарю, есть интересные предложения...
как в VBA отследить вставку/удаление строки (столбца)?
 
sokol92, понял, попробую... Мерси :)
как в VBA отследить вставку/удаление строки (столбца)?
 
_Igor_61, благодарю! Интересный вариант... Правда сообщение выходит уже после удаления столбца, но можно вывести сообщение на подтверждение и в случае отказа - прописать код на отмену...

sokol92, также благодарен! Вариант чудный конечно, а можно, чтобы перехват происходил только на одном конкретном листе, а не во всей книге? Если сложно, то я могу воспользоваться в принципе и выше описанным вариантом...
как в VBA отследить вставку/удаление строки (столбца)?
 
Доброго дня всем!
Тут хорошую тему раскрыли про то, как узнать, что строка была вставлена или удалена...
А как можно отловить удаление или вставку столбца? Например, чтобы при попытке удалить/вставить столбец, выходило MsgBox о подтверждении сего действия (да/нет)? Я сделал через форму Msg, но действие отлавливает непосредственное выделение столбца:
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    With Target
        If .Address = .EntireColumn.Address Then
            frmColumnChange.Show
        End If
    End With
End Sub
Однако его можно выделить и для переноса/раскраски например... Не шибко удобно получается... Никто не сталкивался, что можно сделать?
Изменено: Владимир Самара - 03.06.2019 18:48:01
Подсчёт количества строк в таблице по одному столбцу, начиная с конкретной ячейки
 
Ясно, благодарю!
Подсчёт количества строк в таблице по одному столбцу, начиная с конкретной ячейки
 
Благодарю за помощь! Работает...
Я только не могу понять, почему обязательно нужно отнимать определённое кол-во строк?
Почему он сразу конечную строку не находит, например, как это делает Shift+Ctrl+Вниз?
Подсчёт количества строк в таблице по одному столбцу, начиная с конкретной ячейки
 
Добрый день,
Прошу помочь с решением следующего вопроса... Нужно через макрос записать в ячейке (AS3) формулу, подсчитывающую количество строк в таблице (чстрок) по одному конкретному столбцу, начиная с ячейки AS5 и ниже...
Пробовал много вариантов... В таблице 5 строк, а на выходе получалось: 2, 4, 8, 15... Не знаю, где косяк...
Код
Sub Макрос1()
    X = Range("AS5" & Cells(Rows.Count, 1).End(xlDown)).Row
    Range("AS3").FormulaR1C1 = "=ROWS(R[2]C:R[" & X & "]C)"
End Sub
- значение 4.
Код
Sub Макрос2()
Dim lLastRow As Long
lLastRow = Cells(Rows.Count, 1).End(xlUp).Row
Range("AS3").FormulaR1C1 = "=ROWS(R[2]C:R[" & lLastRow & "]C)"
End Sub
- значение 2. И здесь вроде логично - 2 получается, если считать от AS5 до AS3. Но стоит исправить xlUp на xlDown - выходит ошибка 1004.
Благодарю!
Изменено: Владимир Самара - 29.05.2019 01:45:52
макрос сохранения книги без макросов
 
Sanja, благодарю!
Ігор Гончаренко, да обращал, и честно хотел попробовать, только для меня  не было ясности, что если сообщение будет отключено, книга сохранится как нужно - без макросов... Мерси!
Заполнить массив выбранными значениями listbox чтобы потом использовать в автофильтре таблицы
 
Nordheim, ясно, я пытался прописать подобное в ListBox1_Change..., а надо было в Форме.... Благодарю за помощь!
макрос сохранения книги без макросов
 
Добрый день Знатоки :)
Прошу подсказать по возможности... Слепил макрос для сохранения книги без макросов... Однако после его выполнения выходит сообщение: "... Чтобы продолжить сохранение книги без макросов, нажмите "Да"". А можно в коде заранее прописать, чтобы нажималось "Да" - чтобы сообщение не выводилось?
Код
'сохранении книги на рабочий стол
ПутьКРабочемуСтолу = CreateObject("WScript.Shell").SpecialFolders("Desktop")
ActiveWorkbook.SaveAs ПутьКРабочемуСтолу & "\" & Replace(ThisWorkbook.Name, ".xlsm", ".xlsx"), FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Мерси!
Заполнить массив выбранными значениями listbox чтобы потом использовать в автофильтре таблицы
 
Nordheim, да уже исправил...
VBA знаю на уровне простых макросов, но в этом конечно можно было сразу разобраться... На свежую голову понял, где наименование не указано...
Благодарю за помощь, всё работает!
У меня ещё один вопрос, пробовал сделать так, чтобы при открытии формы в ListBox по умолчанию по всему списку были установлены галочки (сейчас все сняты). Не нашёл такого варианта в объектах для ListBox... Может вы знаете, что лучше применить? Благодарю!
Заполнить массив выбранными значениями listbox чтобы потом использовать в автофильтре таблицы
 
Не могу определить какое кодовое имя листа прописано в коде? Ну, наверное, поэтому оно и кодовое... :)
Код
Private Sub ListBox1_Change()
    Dim arr$(), i%, txt$
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) Then txt = txt & ListBox1.List(i) & ","
    Next i
    With wbsh
        If txt = "" Then .UsedRange.AutoFilter: Exit Sub
        txt = Left$(txt, Len(txt) - 1)
        arr = Split(txt, ",")
        .UsedRange.Offset(1, 0).AutoFilter Field:=1, Criteria1:=arr, Operator:=xlFilterValues
    End With
End Sub
у меня: Лист31(Фильтр)
Заполнить массив выбранными значениями listbox чтобы потом использовать в автофильтре таблицы
 
Да, 424-ая
Ошибка возможно здесь:
.UsedRange.Offset(1, 0).AutoFilter
у меня форма с ListBox на одном листе, фильтр на другом. Суть в том, что на листе "Расчёт" - формулы под исходные данные на листе "Фильтр". Меняя значения фильтра, я меняю логику расчёта. Но переходить с одного листа на другой - много времени. Нужно, чтобы фильтр был под "рукой" - на рабочем листе. Отсюда и другие хотелки из 18 поста.
Вот... :)
Изменено: Владимир Самара - 24.05.2019 16:42:18
Заполнить массив выбранными значениями listbox чтобы потом использовать в автофильтре таблицы
 
Изначально у меня была такая строка с адресом для автофильтра:
Код
With Лист31.Range("$A$2:$A$2355")
Я пытался её переделать, чтобы адрес определялся от третьей строки до конца таблицы... и нашёл такой вариант с Dim Фильтр, но там не совсем такая идея была реализована, как я хотел. Поэтому у меня не получилось.
Пробовал Ваш вариант... Также выводит ошибку по строке:
Код
.UsedRange.Offset(1, 0).AutoFilter Field:=1, Criteria1:=arr, Operator:=xlFilterValues
Заполнить массив выбранными значениями listbox чтобы потом использовать в автофильтре таблицы
 
Nordheim, благодарю за совет!
Пока не помогло, я видать не совсем корректно обозначил: Dim Фильтр, Entry
Буду копать дальше... :)
Заполнить массив выбранными значениями listbox чтобы потом использовать в автофильтре таблицы
 
Для решения первого момента (для автоматического определения диапазона автофильтра) попробовал изменить код вот так:
однако ругается на: .AutoFilter Field:=1, Criteria1:=Array(Arr), Operator:=xlFilterValues
Код
Private Sub ListBox1_Change()
Application.ScreenUpdating = False
Dim Arr()
Dim Str$, i%, u%
Dim Фильтр, Entry
u = 0
For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) Then
        ReDim Preserve Arr(u)
        Arr(u) = ListBox1.List(i, 0)
        u = u + 1
    End If
Next i
With Sheets("Фильтр")
    Фильтр = .Range("a3", .Range("a" & Rows.Count).End(xlUp)).Value
    If u = 0 Then .AutoFilter Field:=1: Exit Sub
    .AutoFilter Field:=1, Criteria1:=Array(Arr), Operator:=xlFilterValues
End With
Application.ScreenUpdating = True
End Sub
Изменено: Владимир Самара - 22.05.2019 17:23:52
Страницы: 1 2 3 След.
Наверх