2014-02-20 2 views
0

전임자에게서받은 엑셀 분 시트를 개선하고 싶습니다.VBA 세포를 채색하고 탈색

Excel 시트에는 클릭 한 셀의 행에 미리 정의 된 값을 입력하는 버튼이 있습니다. 미리 정의 된 열에 입력되는 값이 있습니다. A- 인덱스 작업, 참가자, 의사 결정 등 C-책임자 D- 날짜

없음 B- 약어는 데이터의 입력을 지원하는 버튼이 있습니다. T 버튼 (작업)을 누르면 t가 활성 행 (열 B)에 나타나고 특정 레이아웃이 표시됩니다. P 버튼 (참가자)도 마찬가지입니다. vba 코딩에는 매크로와 일부 변경 사항이 있지만, 이것은 모두 잘 작동합니다!

  • 책임있는 사람이 채워 것이 필수가 (C 열을 의미하는 값을 가진) :

    지금 제가 구현하고 싶은 변화가있다. 값을 입력하지 않으면이 셀은 빨간색으로 바뀌어야합니다. 모든 버튼을 누른 후에해야합니다. 이것은 내가 이미 구현 한 것입니다. 그러나 값이 입력되면 셀을 다시 흰색으로 만드는 법입니다. 내 버전에서는 항상 빨간색으로 남아 있습니다.

코드는 다음과 같습니다

Sub NewDecision() 

    Dim cell As Range 

    If ActiveSheet.AutoFilterMode Then 
     Selection.AutoFilter 
    End If 

    If Range("B4").Value = "" Then 
     Range("B4").Select 
    Else 
     Range("B3").End(xlDown).Offset(1, 0).Range("A1").Select 
    End If 

    Application.ScreenUpdating = False 

    ActiveCell.FormulaR1C1 = "D" 
    Application.Run "SetNewNumber" 
    Application.Run "CopyFormat" 

    ActiveCell.Offset(0, 2).Range("A1").Select 
    ActiveCell.FormulaR1C1 = "all" 

    ActiveCell.Offset(0, 2).Range("A1").Select 
    ActiveCell.FormulaR1C1 = "=TODAY()" 
    ActiveCell.Select 
    Selection.Copy 
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ 
    False, Transpose:=False 
    Application.CutCopyMode = False 
    ActiveCell.Offset(0, -3).Range("A1").Select 
    Application.ScreenUpdating = True 

    For Each cell In Worksheets("Close").Range("A4:F33") 
     If cell = "" Then 
      cell.Interior.ColorIndex = 3 
     Else 
      cell.Interior.ColorIndex = xlNone 
     End If 
    Next 

End Sub 
  • 나는 노란색 열을 회전 버튼을 사용하는 경우, 다음 열이 같은 형식으로되어 있습니다. 이전 형식 만 복사합니다. 이것을 피하는 방법?

나는 문제가이 코드 조각 낳는 있다고 생각 :

Sub CopyFormat() 

Range("A4:J4").Copy 
Range(Cells(ActiveCell.Row, 1), Cells(ActiveCell.Row, 10)).PasteSpecial Paste:=xlFormats 
Cells(ActiveCell.Row, 2).Validation.InCellDropdown = False 
ActiveCell.Offset(0, 1).Select 
Application.CutCopyMode = False 

난 당신이 ... 도와 질문을 자유롭게 할 수 있기를 바랍니다.

Bests

답변

1

전원을 켜고 레드 :

With Range("SOME RANGE").Interior 
     .Pattern = xlSolid 
     .PatternColorIndex = xlAutomatic 
     .Color = 255 
     .TintAndShade = 0 
     .PatternTintAndShade = 0 
    End With 

제거 색상 :

With Range("SOME RANGE").Interior 
    .Pattern = xlNone 
    .TintAndShade = 0 
    .PatternTintAndShade = 0 
End With 
관련 문제