Страницы: 1
RSS
Проблема с расширением диапазона ячеек.
 
Есть макрос:  
 
Private Sub ToggleButton1_Click()  
Dim i As Integer, j As Integer, x As Range  
Application.ScreenUpdating = False: j = ActiveSheet.Index - 1  
For i = 1 To Sheets.Count  
j = j + 1: If j > Sheets.Count Then j = j - Sheets.Count  
Set x = Sheets(j).Cells.Find(TextBox1.Text, , xlValues, xlWhole)  
If Not x Is Nothing Then Sheets(j).Select: x.Select: Range(x.End(xlToLeft), x.End(xlToRight)).Interior.ColorIndex = 4: Exit For  
Next  
    End Sub  
 
Макрос находит искомое значение и когда значение найдено, он расширяет диапазон ячеек по строке влево и вправо "Range(x.End(xlToLeft), x.End(xlToRight))". Только проблема в том, что он расширяет не до конца а только если все ячейки слева и справа заполнены какими либо значениями. Из приложенного рисунка видно, что строки где есть пустые ячейки выделены не до конца (кроме третей строки где все значения заполнены). Мне нужно чтобы он выделял всю используемую область в строке. Как это сделать?  
 
EntireRow не предлагать:)  
 
Спасибо
 
Вы думаете, здесь есть спецы, способные протестировать макрос на картинке?  
 
Почему  EntireRow не предлагать?  
В данном случае - это оптимальное решение.  
 
Попробуйте такой вариант:  
 
Private Sub ToggleButton1_Click()  
   Dim i As Integer, j As Integer, x As Range  
   Application.ScreenUpdating = False: j = ActiveSheet.Index - 1  
   For i = 1 To Sheets.Count  
       j = j + 1: If j > Sheets.Count Then j = j - Sheets.Count  
       Set x = Sheets(j).UsedRange.Find(TextBox1.Text, , xlValues, xlWhole)  
       If Not x Is Nothing Then  
           Intersect(x.EntireRow, x.Worksheet.UsedRange).Interior.ColorIndex = 4  
           Exit For  
       End If  
   Next  
End Sub  
 
 
Если надо покрасить найденную строку только для определённых столбцов, можно написать и так:  
Intersect(x.EntireRow, x.Worksheet.[b:m]).Interior.ColorIndex = 4
 
{quote}{login=EducatedFool}{date=08.05.2010 06:26}{thema=}{post}  
 
Почему  EntireRow не предлагать?  
В данном случае - это оптимальное решение.  
{/post}{/quote}  
 
EntireRow написал не предлагать, так как думал, что мне сразу посоветуют написать такую строчку:  
x.EntireRow.Interior.ColorIndex = 4  
 
Спасибо за ответ!!!
Страницы: 1
Читают тему
Наверх
Loading...