Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > Visual Basic
Перезагрузить страницу Excel. Выделение строки в макросе.
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
CubaLibra CubaLibra вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 27.01.2006
По умолчанию Excel. Выделение строки в макросе. - 27.01.2006, 02:07

Необходимо выделять строку, на любую из ячеек которой перешли. Это нужно с целью дальнейшего глумления над видом данных в ячейках строки (шрифт, цвета и т. п.), с чем проблем нет, так как макрос это записывает.

Чего его заставить никак не выходит, это абстрагироваться от привязки к конкретной ячейке и заставить думать, что он работает со строкой, а не с каким-то конкретным диапазоном ячеек...

Код:
' здесь встали на ячейку
    Rows("5:5").Select
' здесь выделили всю строку (по Shift+пробел)
' дальше балуемся со шрифтами и цветом:
    Selection.Font.Bold = True
    Selection.Font.Italic = True
    With Selection.Interior
        .ColorIndex = 37
        .Pattern = xlSolid
    End With
'... а если перейти на другую строку и запустить макрос снова, то конечно он всё сделает с прежним диапазоном ("5:5") ... а охота, чтобы с той строкой, на которую перешли.
Заранее благодарю.
Ответить с цитированием
  (#2 (permalink)) Старый
pashulka pashulka вне форума
Member
 
Сообщений: 1,856
Сказал(а) спасибо: 2
Поблагодарили 54 раз(а) в 50 сообщениях
Регистрация: 11.03.2005
По умолчанию 27.01.2006, 08:28

Для того, чтобы изменить параметры форматирования ячейки или диапазона ячеек, выделять их вовсе не обязательно.
А для решения Вашего вопроса, могу порекомендовать использовать события рабочего листа :

1. Выделите нужный рабочий лист. Затем нажмите на правую кнопку мышки и в появившемся контекстном меню выберите пункт Исходный текст.
2. Скопируйте нижеопубликованный код в модуль листа.
3. Закройте редактор VBA и кликните правой кнопкой мышки два раза, в любой ячейке нужной строки.

Код:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
With Target.EntireRow
     With .Font
          .Bold = True
          .Italic = True
     End With
     With .Interior
          .ColorIndex = 37
          .Pattern = 1 'xlSolid
     End With
End With: Cancel = True
End Sub
Ответить с цитированием
  (#3 (permalink)) Старый
Avsha Avsha вне форума
Member
 
Сообщений: 22
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.12.2005
По умолчанию 27.01.2006, 09:25

Если вам все таки необходимо предварительно выделять строку, то можно использовать код:

' здесь выделили всю строку (по Shift+пробел)
SendKeys "+ "

или ...
ActiveCell.EntireRow.Select
Ответить с цитированием
  (#4 (permalink)) Старый
pashulka pashulka вне форума
Member
 
Сообщений: 1,856
Сказал(а) спасибо: 2
Поблагодарили 54 раз(а) в 50 сообщениях
Регистрация: 11.03.2005
По умолчанию 27.01.2006, 09:39

Выделять строку не только не обязательно, но и не нужно, но даже если этот случай относится к 1% проценту исключений, то вариант с .EntireRow уже опубликован.
Ответить с цитированием
  (#5 (permalink)) Старый
CubaLibra CubaLibra вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 27.01.2006
По умолчанию 27.01.2006, 10:34

Огромное спасибо всем!

Таки решил пока с "ActiveCell.EntireRow.Select". Во-первых упрямый, во-вторых навскидку показалось более быстрым способом, а времени как обычно ))

Проблема решена, скоро очередные ))
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
pashulka pashulka вне форума
Member
 
Сообщений: 1,856
Сказал(а) спасибо: 2
Поблагодарили 54 раз(а) в 50 сообщениях
Регистрация: 11.03.2005
По умолчанию 27.01.2006, 11:07

Это называется не упрямство, а бес противоречия, что далеко не одно и тоже. Что касается быстроты, то похоже Вы не поняли, что добавление лишних действий, как-то выделение всей строки, в принципе не может увеличить быстродействие макроса. А вот как именно изменять формат ячеек, с использованием событий, нажимая соответствующие кнопки или в ходе выполнения макроса, на самом деле не важно.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделение строки в Excel Serzhsv Visual Basic 12 29.06.2011 09:36
VBA Excel Выделение ячеек с переменными индексами imported_Layriona Visual Basic 1 14.10.2010 09:44
JScript: Удаление строки в Excel worsvch DHTML, JavaScript, VBScript 1 09.07.2010 14:57
Выделение строки в TStringGrid imported_@LeX Delphi 3 07.02.2008 10:39
Выделение строки в Visual С++ 6.0 BD Visual C++ 2 05.12.2007 16:19
Изменение строки в макросе из макроса Alexej_Fedorov Visual Basic 1 30.07.2007 07:50
Выделение строки TStringGrid imported_@LeX Delphi 4 13.07.2007 13:29
выделение всей строки по активной ячейке consilieri Visual Basic 1 03.05.2006 15:11
ComboBox выделение строки Sputni_ck C++ Builder 1 09.04.2006 13:36
Выделение строки (или ее части) с текущей ячейкой MSC51 Visual Basic 6 11.08.2005 13:55
Help!!! Выделение ячеек в Excel согласно условиям (VBA) bigfire Visual Basic 4 08.04.2005 13:11
RichEdit выделение определенным цветом строки Gold_Dreamer Delphi 1 06.08.2004 13:02



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов