Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: VBA MS Office

Программирования для MS Office кроме ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Выделенный диапазон ячеек (че не так сделал?)
 
 автор: Alega   (17.10.2006 в 12:27)   личное сообщение
 
 

Excel

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

Private Sub CommandButton1_Click()

Dim cur_range As Range
With ActiveSheet
Set cur_range = Selection
cur_range.Activate
If .[R[-2]C].Value < .[R[-1]C].Value Then
With cur_range.Interior
.ColorIndex = 4
End With
End If
End With

End Sub


Ругаться, не ругается!!! Но и не хрена не делает, подскажите ПЛЗ в чем прикол.
Заранее Сенкс.

  Ответить  
 
 автор: Alega   (17.10.2006 в 16:01)   личное сообщение
 
 

Хммм?!!

Че-то на старом форуме как-то поживее все было. Год не заходил:((( все забыл:))))
А напомнить некому.

  Ответить  
 
 автор: Силыч   (17.10.2006 в 17:24)   личное сообщение
 
 

рекомендую пошагово оттрассировать код и посмотреть - действительно ли выделяется требуемый диапазон...

  Ответить  
 
 автор: pashulka   (17.10.2006 в 21:59)   личное сообщение
 
 

1. Изменение цвета заливки, в зависимости от данных других ячеек, легко реализуется с помощью условного форматирования.
2. Причём установить условное форматирование можно как вручную, так и программно, причём последнее аозволит значительно ускоритьпроцесс выполнения макроса.
3. Если использование условного форматирование невозможно, то Ваш макрос может выглядить следующим образом.


Private Sub CommandButton1_Click()
If Me.ProtectContents = True Then
   MsgBox "Изменение параметров форматирования в защищённом листе может привести к проблемам", , ""
   Exit Sub
End If
If Selection.Column < 3 Then
   MsgBox "Нельзя выделять первые два столбца", , ""
   Exit Sub
End If
With Selection.Columns(1)
     .Interior.ColorIndex = xlNone
     'иначе заливка останется прежней и возможны нежелательные эффекты
     Dim iCell As Range
     For Each iCell In .Cells
         If IsNumeric(iCell.Item(1, -1)) And _
            IsNumeric(iCell.Item(1, 0)) Then
            If iCell.Item(1, -1) < iCell.Item(1, 0) Then _
               iCell.Interior.ColorIndex = 4
         End If
     Next
End With
End Sub

  Ответить  
 
 автор: Alega   (18.10.2006 в 17:29)   личное сообщение
 
 

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

  Ответить  
 
 автор: pashulka   (18.10.2006 в 20:14)   личное сообщение
 
 

А если бы Вы были также прекрасно осведомлены том, что такое относительная ссылка в формуле, что такое об'ект Range, и как производится сравнение значений ячеек диапазона, то подозрений в мифической кривости - просто бы не возникло.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList