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

Страницы: 1
Макрос с Alt+TAb
 
Цитата
написал:
Меняем концепцию. Книги выбираем с помощью пользовательской формы.
Спасибо за помощь, но, к сожалению, не вариант. Таких мест, которые нужно скопировать в документе несколько на разных листах. Идея была в том, чтобы один раз запустить макрос и он бы дальше уже сам  копировал всю нужную информацию.
Макрос с Alt+TAb
 
Постоянно приходится выполнять следующую последовательность действий:
Книга1 → Alt+Tab → Скопировать информацию из листа Full в Книге2 → Alt+Tab → Скопировать информацию в Книгу1. Книги всегда разные, поэтому как-то заранее прописать название книг не вариант, приходится использовать ALt+Tab.
Получился следующий макрос:
Код
Sub КопироватьFull()
'Копирование нужной информации в Книге2
    Sheets("Full").Select
    ActiveSheet.Protect Password:="1111", UserInterfaceOnly:=True
    Range("A4:P5000").Select
    Selection.SpecialCells(xlCellTypeVisible).Select
    Selection.Copy
End Sub

Sub Hotkeys()
Application.OnKey "^+X", "КопироватьFull"
End Sub

Sub RunMacroAndPaste()
    Application.SendKeys "%{TAB}", True
    Application.Wait Now + TimeValue("00:00:01")
    Application.SendKeys "^+X", True
    Application.Wait Now + TimeValue("00:00:01")
    Application.SendKeys "%{TAB}", True
    Application.Wait Now + TimeValue("00:00:01")
    Range("A35").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
End Sub

1) Код корректно работает до момента, когда в возвращаюсь в Книгу1 через ALt+Tab. Т.е. после добавления в макрос второго "Application.SendKeys "%{TAB}", True" почему-то перестаёт работать "КопироватьFull".

2) Пробовал выполнить отдельно вторую часть макроса:
Код
    Application.SendKeys "%{TAB}", True
    Application.Wait Now + TimeValue("00:00:01")
    Range("A35").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
Выдаёт ошибку 1004 "Метод select из класса Range завершен неверно". При этом, если проделывать всё самому, то никаких проблем не возникает.

Помогите, пожалуйста, скорректировать код.  
Изменено: Dobbisvoboden - 05.02.2025 06:37:17
Скорректировать макрос, работающий только на активную ячейку.
 
Цитата
написал:
Dobbisvoboden , Доброго времени суток. Если я вас правильно понял, то вот код:
Да, именно это и нужно было. Большое спасибо!
Скорректировать макрос, работающий только на активную ячейку.
 
Понимаю, что вопрос крайне простой, но работа прибавляется быстрее, чем я изучаю VBA.
Есть следующий код:
Код
Sub Reverse_Word()
 On Error Resume Next
 ActiveCell.Value = StrReverse(ActiveCell.Value)
End Sub
Подскажите, пожалуйста, как скорректировать код, чтобы он работал либо на несколько выделенных ячеек, либо до последней заполненной строки в таблице.
Скорректировать макрос, работающий только на активную ячейку.
 
Цитата
написал:
выделяете ячейки и запускаете(первую строку с Sub не забудьте добавить).
Сработало. Большое спасибо!
Скорректировать макрос, работающий только на активную ячейку.
 
Нашёл следующий макрос:
Код
    Dim s$, I&, j&
     s = Selection
    
  For I = 1 To Len(s)
   j = AscW(Mid$(s, I, 1))
   If j < 256 Then
       Mid$(s, I, 1) = Chr(j)
       Debug.Print I & vbTab & Mid$(s, I, 1) & vbTab & j & vbTab & Chr(j)
   End If
   Next
 
   ActiveCell.Value = s
End Sub

Он работает только на активную ячейку. Нужно скорректировать его так, чтобы он работал либо на несколько выделенных ячеек, либо до последней заполненной строки в таблице.

Изменено: Dobbisvoboden - 17.01.2025 16:41:34
Макрос в зависимости от названия листа
 
Цитата
КодSub test()
   Select Case ActiveSheet.Name
   Case "Full"
       Range("A1:A10").Copy
   Case "Basic"
       Range("B1:B10").Copy
   End Select
End Sub
Большое спасибо, всё сработало!
Макрос в зависимости от названия листа
 
Нужен макрос, чтобы в зависимости от названия листа копировались разные области. Например:
Если название листа Full, то скопировать A1:A10
Если название листа Basic, то скопировать B1:B10.
Вывести адрес найденной по тексту ячейки
 
Цитата
написал:
Вводится одновременным нажатием клавиш Ctrl+Shift+Enter
Сработало. Большое спасибо!
Вывести адрес найденной по тексту ячейки
 
Цитата
написал:
Добрый день. Где искать? только в одном столбце или на всем листе?
На всём листе.
Вывести адрес найденной по тексту ячейки
 
Цитата
написал:
Код
=АДРЕС(ЦЕЛОЕ(МАКС((A1:C8="Материалы")*(1000*СТРОКА(A1:C8)+СТОЛБЕЦ(A1:C8)))/1000);ОСТАТ(МАКС((A1:C8="Материалы")*(1000*СТРОКА(A1:C8)+СТОЛБЕЦ(A1:C8)));1000);4)
Формула массива. Измените диапазон A1:C8 для своего примера.
Почему-то выдаёт ошибку.
Вывести адрес найденной по тексту ячейки
 
Добрый день!
Нужно найти ячейку, содержащую, определенный текст, например, "Материалы" и вывести адрес этой ячейки (например, A1).
Вроде бы задача не сложная, но решение найти так и не смог.
Макрос с использованием СЖПРОБЕЛЫ
 

Нужно написать макрос с формулой СЖПРОБЕЛЫ. Может быть по несколько тысяч кодов в разных столбиках, между ними могут быть пробелы, поэтому условно указал на 5000 строк. После все значения нужно перевести в текстовый формат. Написал макрос. Проблема в том, что Excel при его использовании будет учитывать этот столбик (в данном случае C) до 5000 строки, что в дальнейшем может мешать работе. Можно ли как-то избавиться от этого или скорректировтать сам макрос?

Сам макрос:

Код
    ActiveCell.Columns("A:A").EntireColumn.Select
    Selection.Insert Shift:=xlToRight
    ActiveCell.Select
    ActiveCell.FormulaR1C1 = "=TRIM(RC[1])"
    Selection.AutoFill Destination:=ActiveCell.Range("A1:A5000")
    ActiveCell.Range("A1:A5000").Select
    ActiveCell.Columns("A:A").EntireColumn.Select
    Selection.Copy
    ActiveCell.Offset(0, 1).Columns("A:A").EntireColumn.Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveCell.Offset(0, -1).Columns("A:A").EntireColumn.Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft
    ActiveCell.Columns("A:A").EntireColumn.Select
    Selection.NumberFormat = "@"
Страницы: 1
Loading...