나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 호랑나비 (yang1204)

추천:  2
파일:     조회:  3419
제목:   [재질문]VBA 무엇이 잘못되었는지?
     
  현재셀의 값과 위 셀의 값을 비교하여 같을 경우와 다를 경우 셀서식을 다르게 
정합니다. 그런데 작동하지 않네요 무엇을 어떻게 해야 하는지 알려주세요 
---------------------------------------------------------------------------------
Sub 위셀값과현재셀값비교조건부서식()
'
   Dim x, y As Range

    Set x = ActiveCell
    Set y = ActiveCell.Offset(-1, 0)
    
    Selection.FormatConditions.Delete
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="= x <> y "
    Selection.FormatConditions(1).Interior.ColorIndex = 6
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="= x = y "
    Selection.FormatConditions(1).Interior.ColorIndex = 38

End Sub



* 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

1. 엑셀 버전(95,97,2000,2002):
2. 윈도우즈의 버전(win95,win98,winME,winNT,win2000,winXP):
3. CPU (486,PentiumI/II/III/IV...):
4. RAM (32,64,128,256,512MB,1G...): 

* 아래줄에 질문을 작성하세요 >>
==============[호랑나비님 글에 대한 답변입니다]==============
For Each X In 다음에 "Range("a12:z12")"같이 하면 에러가 나지 않고 잘되는데 
셀이 현재있는 곳의 행을 범위로 선택하기 위해 
"ActiveCell.Rows("1:1").EntireRow.Select" 를 집어 넣으면 에러가 납니다.
해결방법을 알려주세요


Sub 조건비교서식()
  Dim X As Range
   'Set X = ActiveCell
  For Each X In ActiveCell.Rows("1:1").EntireRow.Select
    If X <> X.Offset(-1, 0) Then
      X.Interior.ColorIndex = 38
    Else
      X.Interior.ColorIndex = 6
    End If
  Next X
End Sub


 
[불량 게시물 신고]  
땡칠이아래와 같이 해 보시길...
Sub 조건비교서식()
  Dim X As Range

ActiveCell.EntireRow.Select     
For Each X In Selection
    If X <> X.Offset(-1, 0) Then
      X.Interior.ColorIndex = 38
    Else
      X.Interior.ColorIndex = 6
    End If
  Next X
End Sub
07-07 (21:42)
삭제 ■신고
땡칠이Option Explicit
'/// 더 좋은 방법은 작업범위를 정하시는 것이겠죠?
Sub 조건비교서식()
  Dim X As Range
  Dim rngStart As Range
  Dim rngEnd As Range
  Dim rngTarget As Range
  
    Set rngStart = ActiveCell                   '시작위치셀
    Set rngEnd = ActiveCell.End(xlToRight)  '(xlDown)         '끝위치셀
    Set rngTarget = Range(rngStart, rngEnd)     '작업범위
  
  '범위를 특정짓지 않고 EntireRow로 범위를 잡으면 전체행이 잡혀
  'Data가 없는 범위까지 색칠이 되지 않으까요?
  
  For Each X In rngTarget
    If X <> X.Offset(-1, 0) Then
      X.Interior.ColorIndex = 38
    Else
      X.Interior.ColorIndex = 6
    End If
  Next X
End Sub
07-07 (21:47)
삭제 ■신고
        
  

작성일 : 2003-07-07(18:55)
최종수정일 : 2003-07-07(18:55)
 


 ◎ 관련글

  제 목   작성자   날짜
VBA 무엇이 잘못되었는지? 호랑나비 2003-07-07
[재질문]VBA 무엇이 잘못되었는지? 호랑나비 2003-07-07