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

Страницы: 1
Как установить абсолютную ссылку на номер ячейки, заданный через макрос
 
Здравствуйте!
Подскажите пож-та, как можно програмно установить абсолютню ссылку в следующем случае:
Я прописал код для нахождения последней заполненной ячейке в столбце - "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)"
Благодарю за помощь!
Подсчёт количества строк в таблице по одному столбцу, начиная с конкретной ячейки
 
Добрый день,
Прошу помочь с решением следующего вопроса... Нужно через макрос записать в ячейке (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
Замена формул на значения во всех книгах папки
 
Добрый день!

Коллеги, в архиве форума нашёл следующий код:
Код
Sub ReplaceAllFormulsFolder()
Dim fd As FileDialog
Dim iPath As String
Dim iFileName As String
Dim iSheet As Worksheet
  
   Set fd = Application.FileDialog(msoFileDialogFolderPicker)
   ChDir "C:\"
   With fd
       .ButtonName = "Выбрать"
       If .Show = -1 Then
           iPath = .SelectedItems(1) & Application.PathSeparator
       Else
           Exit Sub
       End If
   End With
   Set fd = Nothing
      
   If MsgBox("Во всех документах Excel в папке " & iPath & " на всех листах формулы будут заменены на значения!" & Chr(13) & "Вы уверены ???", vbOKCancel + vbExclamation, "Подтверждение") = vbCancel Then Exit Sub
   If MsgBox("Вы отдаёте себе отчёт, что формулы во всех файлах будут удалены?", vbOKCancel + vbExclamation, "Подтверждение") = vbCancel Then Exit Sub
      
   With Application
       .ScreenUpdating = False
       .Calculation = xlCalculationManual
       '.EnableEvents = False
       iFileName = Dir(iPath & "*.xls")
       Do While iFileName$ <> ""
           With Workbooks.Open(Filename:=iPath & iFileName, UpdateLinks:=0) 'ругается!!!
               For Each iSheet In .Sheets
                   With iSheet.UsedRange
                       .Value = .Value
                   End With
               Next
           .Close saveChanges:=True
           End With
           iFileName$ = Dir
       Loop
       .EnableEvents = True
       .Calculation = xlCalculationAutomatic
       .ScreenUpdating = True
   End With
       MsgBox "Во всех документах Excel в папке " & iPath & " на всех листах формулы были заменены на значения!", 64, "Конец"
End Sub
Однако, при выполнении макроса, Excel ругается на следующую строку:
Код
With Workbooks.Open(Filename:=iPath & iFileName, UpdateLinks:=0)
Error 1004 - неизвестное имя. Не знаю в чём причина. Можете помочь?
Благодарю!
Изменено: Владимир Самара - 26.01.2018 00:26:12
Извлечение адреса выделенного диапазона
 
Добрый день!

Подскажите пож-та, есть такой код:
Код
'Извлечение адреса выделенного диапазона
Private Sub CommandButton52_Click()
Dim cell As Range
Dim address As String
    Set cell = Selection
    address = cell.address(External:=True)
    address = Right(address, Len(address) - InStr(1, address, "]"))
End Sub
1. Как мне скопировать полученный результат (адрес) в буфер обмена?
Я пробовал: address.Copy - не работает...

2. Если вставить address в ячейку кодом:
Код
    Range("O7").Select
    With Selection
       .FormulaR1C1 = address 'вывод адреса в ячейку
    End With
В 2007 офисе выводит без апострофа: Лист1!$I$24:$I$30 - всё ок!
А в более поздних версиях (2003) с апострофом( ' ): Лист1'!$I$15:$I$21 - в результате чего ссылка не рабочая.
Можно это поправить в коде?

Благодарю!
Удалить все формулы и значения кроме текстовых
 
Здравствуйте!

Прошу помочь по возможности в написании следующего макроса...
Есть потребность удалять формулы и значения кроме текстовых в выделенном диапазоне.
Я ориентировался на работу окна "Выделение группы ячеек" (F5).
Сначала записал макрос для констант, затем для формул - без галочки для текста.
К сожалению не смог прописать, чтобы две команды выполнялись сразу - т.е. сразу выделяли ячейки по условиям для констант и формул.
Получилось только выполнить сначала одну операцию, затем другую. Да и ещё прописать обход ошибки 1004, в случае если условия одной из команд не выполняются (т.е. данные отсутствуют):
Код
Sub ClearContent()
On Error Resume Next: en& = Err.Number
    Range("A1").Select
    Selection.SpecialCells(xlCellTypeConstants, 21).Select 'выделить все константы, кроме текста
    Selection.ClearContents 'удалить выделенное
    Range("A1").Select
    Selection.SpecialCells(xlCellTypeFormulas, 21).Select  'выделить все формулы, кроме текстовых
    Selection.ClearContents 'удалить выделенное
If en& = 0 Then Err.Clear
End Sub
В итоге получилось, что нужно, но условия действуют для всего листа, а хотелось бы только для выделенного диапазона.
Может кто подсказать, как это лучше сделать?
Мои наработки (пример, что получилось) в файле...
Благодарю!
CheckBox в надстройке для выбора пересчёта книги
 
Здравствуйте!
С новым годом всех!
Пусть он принесёт много интересных открытий и новых возможностей! :)

Мне часто приходится пользоваться включением и отключением автоматического пересчёта...
Для удобства исполнения этой операции решил создать CheckBox в надстройке, которая всегда на рабочем листе в виде формы.
Установка флажка означает автопересчёт, снятие флажка - ручной пересчёт... - Это я сделал в прилагаемом файле.

Проблема в том, что хотелось бы привязать текущее состояние пересчёта к флажку, так как при открытии формы - флажок всегда снят. Но логично было бы - если в Excel по умолчанию установлен автопересчёт, то при открытии формы хотелось бы видеть установленный флажок (не фон), чтобы при его снятии перейти на ручной... Как это можно сделать товарищи? По форуму искал...

П.С. установка ручного пересчёта и дальнейший пересчёт по F9 в моём случае не подходит (конфликтует с рабочими макросами и их не изменишь). Необходимо именно переключение и минимум времени на это.
Excel 2007-2013
Благодарю!
Изменено: Владимир Самара - 20.01.2017 16:26:57
Камера Excel для отслеживания изменений
 
Доброго дня всем и хорошей погоды! :)

Возникла необходимость создать макрос для использования Камеры Excel - с возможностью выбора диапазона и места вставки.
В интернете нашёл код VBA под это дело..., но при обработке вставляет только изображение - без последующего изменения данных, плюс ругается на последнюю строку в коде: Selection.Formula = UserRange.Address

Сам код:
Код
Sub Camera()
    Dim MyPrompt As String
    Dim MyTitle As String
    Dim UserRange As Range
    Dim OutputRange As Range

    Application.ScreenUpdating = True

    'Prompt user for range to capture
    MyPrompt = "Выберите диапазон для отслеживания!"
    MyTitle = "Выделение диапазона"
    On Error Resume Next
    Set UserRange = Application.InputBox(Prompt:=MyPrompt, _
        title:=MyTitle, Default:=ActiveCell.Address, Type:=8)
    If UserRange Is Nothing Then End
    On Error GoTo 0

    'Copy range to Clipboard as picture
    UserRange.CopyPicture

    'Prompt user for range to paste to
    MyPrompt = "Укажите ячейку для вставки!"
    MyTitle = "Выбор места для камеры"
    On Error Resume Next
    Set OutputRange = Application.InputBox(Prompt:=MyPrompt, _
        title:=MyTitle, Default:=ActiveCell.Address, Type:=8)
    If OutputRange Is Nothing Then End
    On Error GoTo 0

    'Paste picture to output range
    OutputRange.PasteSpecial
    Selection.Formula = UserRange.Address
    
End Sub
Пробовал последние строки заменять на:
ActiveSheet.Pictures.Paste Link:=True
Но что-то не работает...

Прошу Вашей помощи :)
Благодарю!
Страницы: 1
Наверх