Страницы: 1
RSS
Эквивалент ctrl+a и ctrl+v на VBA
 
Макрорекодер выдает координаты, а у меня таблица генерируется и диапазон каждый раз разный.
 
{quote}{login=Kuzco}{date=18.05.2012 01:32}{thema=Эквивалент ctrl+a и ctrl+v на VBA}{post}Макрорекодер выдает координаты, а у меня таблица генерируется и диапазон каждый раз разный.{/post}{/quote}  
"ctrl+a" это выделить всё, что у вас "всё"?!. И вообще, можно простым русским языком, с чувством , с толком, расстановкой, чтобы было понятно и... бабушке Арине. Приступаем?.. ;) -18569-
 
Прямой эквивалент - это  
 
Application.SendKeys "^a^v"  
 
В остальном присоединяюсь к Z.
 
Всё- это большая таблица. около 500000 строк и 5 столбцов.    
Сендкей пробовал. Так как после сендкея есть еще события, то сендкей срабатывает до того, как эксель отработает предыдущие.
 
Может быть так подойдёт:  
 
ActiveSheet.UsedRange.Find("что-то_приметное_существующее").CurrentRegion.Select  
 
 
Насчёт ctrl+v непонятно.
 
Мне нужно книгу с таблицей открыть,  выделить, скопировать и вставить в ячейку a2 другой книги.  
 
Если в один макрос впихнуть "открыть,  выделить, скопировать", а в другой "вставить в ячейку a2 другой книги". то сендкеи срабатывают.  
А если все в теле одного макроса, то до того, как книга откроется, уже срабатываю в ячейке а2 сендкеи.  
 
Я пробовал выделить всю область с помощью  Range(Selection, Selection.End(xlDown)).Select, но встречаются пустые ячейки и он на этом спотыкается
 
ActiveSheet.UsedRange.Copy Workbooks("Другая").Sheets("Нужный").Range("A2")
 
Проблема не скопировать, проблема выделить.  
 
 
А в VBA есть таймер. Может просто указать задержку секунд  в 5, тогда сендкей сработает
 
Бестолковая какая-no переписка.  
ActiveSheet.Cells.Select  
ActiveSheet.UsedRange.Select  
Что из этого "выделить все"?  
Или "все" - эот что-то другое?  
И зачем вообще выделять?
 
Мне не нужно выделить все ячейки, а только таблицу, когда щелкаешь внутри таблицы и жмешь ctrl+a - она выделяется.  
Вот этот самый ctrl+a я и пытаюсь описать макросом, но без sendkey
 
ActiveSheet.UsedRange.Select выделяет, но там есть еще ненужный хвост. Его генерирует программа при импорте.    
 
Можно ли добавить скрипт, который удаляет последние 5 строк?
 
{quote}{login=}{date=18.05.2012 03:18}{thema=}{post}... Можно ли добавить скрипт, который удаляет последние 5 строк?{/post}{/quote}  
Можно, добавляйте...
 
Я знаю только как удалить последнюю строку, а вот как последние 5, не знаю
 
@#$%#$%!  
Пример таблицы где?  
Зачем вообще выделять?  
Мой вариант пробовали?
 
{quote}{login=}{date=18.05.2012 03:26}{thema=}{post}Я знаю только как удалить последнюю строку, а вот как последние 5, не знаю{/post}{/quote}Если умеете последнюю - добавьте к ней ещё четыре.  
Вы изначально упёрлись в проблему с выделением, а ведь для копирования совсем необязательно выделять. И можно сразу копировать за вычетом пяти строк, чтобы потом их не удалять.
 
Если Вам не подходят вышеуказанные советы и макросы специалистов VBA, тогда вот Вам макрос с Вашим любимым SendKeys:  
 
Sub SendK()  
Dim rR As Range  
Dim wb As String: wb = ThisWorkbook.Path & "/ONE.xls"  
   For Each rR In ActiveSheet.UsedRange  
       If rR.Value <> "" Then rR.Activate  
   Next  
   With Application  
       .SendKeys "^a^c"  
       DoEvents  
       Workbooks.Open Filename:=wb  
       .SendKeys "^v"  
       DoEvents  
       .CutCopyMode = False  
   End With  
End Sub
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
Страницы: 1
Читают тему
Наверх