ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   macro problem (https://www.excelbanter.com/excel-programming/425484-macro-problem.html)

Project manager

macro problem
 
hi,

having problems getting my macro to work.

i want it so that you can only edit rows in e5 to k27 once O/C/A is picked
from the drop down in b5 to b27. ie i want people to fill in B5, then the
rest of the row.

if it helps set the scene each row is a task/project, and column b is a type
of work, e to k is sat - fri where hours are entered...

i also have a problem with when data is pasted in it doesnt trigger the
event change.

any help would be awesome,

cheers

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Not Intersect(Target, Range("E5:K27")) Is Nothing And Target.Count = 1 Then
'it is one of E5:K27

i = Target.Row
Select Case Range("B5" & i).Value
Case "O"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select

Case "C"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select
Case "A"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select

Case Else
Application.EnableEvents = False
Range("E" & i & ":K" & i).Value = 0
Range("E" & i & ":K" & i).Font.ColorIndex = 2
MsgBox "PLEASE COMPLETE O/C/A"
Application.EnableEvents = True
End Select
End If
End Sub


joel

macro problem
 
First, worksheet change only works on one sheet and must be place in the VBA
Sheet where you are changing data. VBA has 3 types sheets
1) Thisworkbook
2) Modules
3) Sheets - one fror every worksheet in the workbook.

Make sure you are in the correct sheet.


Then place a break point on the SUB line of your macro by clicking with the
mouse on the line and then press F9. Go back to worksheet and make a change.
The macro should stop on the 1st line. Then step through the code using F8.
This should help you isolate the problem.

"project manager" wrote:

hi,

having problems getting my macro to work.

i want it so that you can only edit rows in e5 to k27 once O/C/A is picked
from the drop down in b5 to b27. ie i want people to fill in B5, then the
rest of the row.

if it helps set the scene each row is a task/project, and column b is a type
of work, e to k is sat - fri where hours are entered...

i also have a problem with when data is pasted in it doesnt trigger the
event change.

any help would be awesome,

cheers

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Not Intersect(Target, Range("E5:K27")) Is Nothing And Target.Count = 1 Then
'it is one of E5:K27

i = Target.Row
Select Case Range("B5" & i).Value
Case "O"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select

Case "C"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select
Case "A"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select

Case Else
Application.EnableEvents = False
Range("E" & i & ":K" & i).Value = 0
Range("E" & i & ":K" & i).Font.ColorIndex = 2
MsgBox "PLEASE COMPLETE O/C/A"
Application.EnableEvents = True
End Select
End If
End Sub


project manager

macro problem
 
its in sheets and when i put O , C or A in column b it stays white.



"Joel" wrote:

First, worksheet change only works on one sheet and must be place in the VBA
Sheet where you are changing data. VBA has 3 types sheets
1) Thisworkbook
2) Modules
3) Sheets - one fror every worksheet in the workbook.

Make sure you are in the correct sheet.


Then place a break point on the SUB line of your macro by clicking with the
mouse on the line and then press F9. Go back to worksheet and make a change.
The macro should stop on the 1st line. Then step through the code using F8.
This should help you isolate the problem.

"project manager" wrote:

hi,

having problems getting my macro to work.

i want it so that you can only edit rows in e5 to k27 once O/C/A is picked
from the drop down in b5 to b27. ie i want people to fill in B5, then the
rest of the row.

if it helps set the scene each row is a task/project, and column b is a type
of work, e to k is sat - fri where hours are entered...

i also have a problem with when data is pasted in it doesnt trigger the
event change.

any help would be awesome,

cheers

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Not Intersect(Target, Range("E5:K27")) Is Nothing And Target.Count = 1 Then
'it is one of E5:K27

i = Target.Row
Select Case Range("B5" & i).Value
Case "O"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select

Case "C"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select
Case "A"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select

Case Else
Application.EnableEvents = False
Range("E" & i & ":K" & i).Value = 0
Range("E" & i & ":K" & i).Font.ColorIndex = 2
MsgBox "PLEASE COMPLETE O/C/A"
Application.EnableEvents = True
End Select
End If
End Sub


joel

macro problem
 
Did you add the break point like I said? Also does other macros run. check
your security settings from worksheet menu Tools - Options - Macro -Security
and make sure you are at medium level. Also when you open your workbook make
sure you check that you want macros enabled.

"project manager" wrote:

its in sheets and when i put O , C or A in column b it stays white.



"Joel" wrote:

First, worksheet change only works on one sheet and must be place in the VBA
Sheet where you are changing data. VBA has 3 types sheets
1) Thisworkbook
2) Modules
3) Sheets - one fror every worksheet in the workbook.

Make sure you are in the correct sheet.


Then place a break point on the SUB line of your macro by clicking with the
mouse on the line and then press F9. Go back to worksheet and make a change.
The macro should stop on the 1st line. Then step through the code using F8.
This should help you isolate the problem.

"project manager" wrote:

hi,

having problems getting my macro to work.

i want it so that you can only edit rows in e5 to k27 once O/C/A is picked
from the drop down in b5 to b27. ie i want people to fill in B5, then the
rest of the row.

if it helps set the scene each row is a task/project, and column b is a type
of work, e to k is sat - fri where hours are entered...

i also have a problem with when data is pasted in it doesnt trigger the
event change.

any help would be awesome,

cheers

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Not Intersect(Target, Range("E5:K27")) Is Nothing And Target.Count = 1 Then
'it is one of E5:K27

i = Target.Row
Select Case Range("B5" & i).Value
Case "O"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select

Case "C"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select
Case "A"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select

Case Else
Application.EnableEvents = False
Range("E" & i & ":K" & i).Value = 0
Range("E" & i & ":K" & i).Font.ColorIndex = 2
MsgBox "PLEASE COMPLETE O/C/A"
Application.EnableEvents = True
End Select
End If
End Sub


project manager

macro problem
 
it toggles through with ut any errors in the code, just how its written/ what
it performs...

"Joel" wrote:

Did you add the break point like I said? Also does other macros run. check
your security settings from worksheet menu Tools - Options - Macro -Security
and make sure you are at medium level. Also when you open your workbook make
sure you check that you want macros enabled.

"project manager" wrote:

its in sheets and when i put O , C or A in column b it stays white.



"Joel" wrote:

First, worksheet change only works on one sheet and must be place in the VBA
Sheet where you are changing data. VBA has 3 types sheets
1) Thisworkbook
2) Modules
3) Sheets - one fror every worksheet in the workbook.

Make sure you are in the correct sheet.


Then place a break point on the SUB line of your macro by clicking with the
mouse on the line and then press F9. Go back to worksheet and make a change.
The macro should stop on the 1st line. Then step through the code using F8.
This should help you isolate the problem.

"project manager" wrote:

hi,

having problems getting my macro to work.

i want it so that you can only edit rows in e5 to k27 once O/C/A is picked
from the drop down in b5 to b27. ie i want people to fill in B5, then the
rest of the row.

if it helps set the scene each row is a task/project, and column b is a type
of work, e to k is sat - fri where hours are entered...

i also have a problem with when data is pasted in it doesnt trigger the
event change.

any help would be awesome,

cheers

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Not Intersect(Target, Range("E5:K27")) Is Nothing And Target.Count = 1 Then
'it is one of E5:K27

i = Target.Row
Select Case Range("B5" & i).Value
Case "O"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select

Case "C"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select
Case "A"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select

Case Else
Application.EnableEvents = False
Range("E" & i & ":K" & i).Value = 0
Range("E" & i & ":K" & i).Font.ColorIndex = 2
MsgBox "PLEASE COMPLETE O/C/A"
Application.EnableEvents = True
End Select
End If
End Sub


joel

macro problem
 
You originally said the macro wasn't running when a change was made. When
you set the break point you found the code was being activate. Your problem
may be with the application Enable Events. If you get an error while in the
function it will disable future events until you enable the event again. I
rewrote the macro below the way it should be written.

Also you had this error
from
Range("B5" & i).
to
Range("B" & i).


Private Sub Worksheet_Change(ByVal Target As Range)


Application.EnableEvents = False

For Each cell In Target
If Not Intersect(Target, Range("E5:K27")) Is Nothing Then
'it is one of E5:K27

With cell
i = cell.Row
Select Case Range("B" & i).Value
Case "O", "C", "A"
.FormatConditions.Delete
.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlEqual, _
Formula1:="0"
.FormatConditions(1).Font.ColorIndex = 2
.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlGreater, _
Formula1:="0"
.FormatConditions(1).Font.ColorIndex = 1


Case Else
.Value = 0
.Font.ColorIndex = 2
MsgBox "PLEASE COMPLETE O/C/A"
End Select
End With
End If
Next cell
Application.EnableEvents = True
End Sub




"project manager" wrote:

it toggles through with ut any errors in the code, just how its written/ what
it performs...

"Joel" wrote:

Did you add the break point like I said? Also does other macros run. check
your security settings from worksheet menu Tools - Options - Macro -Security
and make sure you are at medium level. Also when you open your workbook make
sure you check that you want macros enabled.

"project manager" wrote:

its in sheets and when i put O , C or A in column b it stays white.



"Joel" wrote:

First, worksheet change only works on one sheet and must be place in the VBA
Sheet where you are changing data. VBA has 3 types sheets
1) Thisworkbook
2) Modules
3) Sheets - one fror every worksheet in the workbook.

Make sure you are in the correct sheet.


Then place a break point on the SUB line of your macro by clicking with the
mouse on the line and then press F9. Go back to worksheet and make a change.
The macro should stop on the 1st line. Then step through the code using F8.
This should help you isolate the problem.

"project manager" wrote:

hi,

having problems getting my macro to work.

i want it so that you can only edit rows in e5 to k27 once O/C/A is picked
from the drop down in b5 to b27. ie i want people to fill in B5, then the
rest of the row.

if it helps set the scene each row is a task/project, and column b is a type
of work, e to k is sat - fri where hours are entered...

i also have a problem with when data is pasted in it doesnt trigger the
event change.

any help would be awesome,

cheers

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Not Intersect(Target, Range("E5:K27")) Is Nothing And Target.Count = 1 Then
'it is one of E5:K27

i = Target.Row
Select Case Range("B5" & i).Value
Case "O"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select

Case "C"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select
Case "A"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select

Case Else
Application.EnableEvents = False
Range("E" & i & ":K" & i).Value = 0
Range("E" & i & ":K" & i).Font.ColorIndex = 2
MsgBox "PLEASE COMPLETE O/C/A"
Application.EnableEvents = True
End Select
End If
End Sub


project manager

macro problem
 
its nearly there, just the formatting. if o/c/a is in b and the value is =
to 0 make text white, if not black. if no o c a the zero it and white...


"Joel" wrote:

You originally said the macro wasn't running when a change was made. When
you set the break point you found the code was being activate. Your problem
may be with the application Enable Events. If you get an error while in the
function it will disable future events until you enable the event again. I
rewrote the macro below the way it should be written.

Also you had this error
from
Range("B5" & i).
to
Range("B" & i).


Private Sub Worksheet_Change(ByVal Target As Range)


Application.EnableEvents = False

For Each cell In Target
If Not Intersect(Target, Range("E5:K27")) Is Nothing Then
'it is one of E5:K27

With cell
i = cell.Row
Select Case Range("B" & i).Value
Case "O", "C", "A"
.FormatConditions.Delete
.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlEqual, _
Formula1:="0"
.FormatConditions(1).Font.ColorIndex = 2
.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlGreater, _
Formula1:="0"
.FormatConditions(1).Font.ColorIndex = 1


Case Else
.Value = 0
.Font.ColorIndex = 2
MsgBox "PLEASE COMPLETE O/C/A"
End Select
End With
End If
Next cell
Application.EnableEvents = True
End Sub




"project manager" wrote:

it toggles through with ut any errors in the code, just how its written/ what
it performs...

"Joel" wrote:

Did you add the break point like I said? Also does other macros run. check
your security settings from worksheet menu Tools - Options - Macro -Security
and make sure you are at medium level. Also when you open your workbook make
sure you check that you want macros enabled.

"project manager" wrote:

its in sheets and when i put O , C or A in column b it stays white.



"Joel" wrote:

First, worksheet change only works on one sheet and must be place in the VBA
Sheet where you are changing data. VBA has 3 types sheets
1) Thisworkbook
2) Modules
3) Sheets - one fror every worksheet in the workbook.

Make sure you are in the correct sheet.


Then place a break point on the SUB line of your macro by clicking with the
mouse on the line and then press F9. Go back to worksheet and make a change.
The macro should stop on the 1st line. Then step through the code using F8.
This should help you isolate the problem.

"project manager" wrote:

hi,

having problems getting my macro to work.

i want it so that you can only edit rows in e5 to k27 once O/C/A is picked
from the drop down in b5 to b27. ie i want people to fill in B5, then the
rest of the row.

if it helps set the scene each row is a task/project, and column b is a type
of work, e to k is sat - fri where hours are entered...

i also have a problem with when data is pasted in it doesnt trigger the
event change.

any help would be awesome,

cheers

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Not Intersect(Target, Range("E5:K27")) Is Nothing And Target.Count = 1 Then
'it is one of E5:K27

i = Target.Row
Select Case Range("B5" & i).Value
Case "O"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select

Case "C"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select
Case "A"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select

Case Else
Application.EnableEvents = False
Range("E" & i & ":K" & i).Value = 0
Range("E" & i & ":K" & i).Font.ColorIndex = 2
MsgBox "PLEASE COMPLETE O/C/A"
Application.EnableEvents = True
End Select
End If
End Sub


joel

macro problem
 

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long

Application.EnableEvents = False

For Each cell In Target
If Not Intersect(Target, Range("E5:K27")) Is Nothing Then
'it is one of E5:K27

With cell

Select Case Range("B5" & i).Value
Case "O", "C", "A"
.FormatConditions.Delete
.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlEqual, _
Formula1:="0"

.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlGreater, _
Formula1:="0"
If cell.Value = 0 Then
.FormatConditions(1).Font.ColorIndex = 2
Else
.FormatConditions(1).Font.ColorIndex = 1
End If

Case Else
.Value = 0
.Font.ColorIndex = 2
MsgBox "PLEASE COMPLETE O/C/A"
End Select
End With
End If
Next cell
Application.EnableEvents = True
End Sub



"project manager" wrote:

its nearly there, just the formatting. if o/c/a is in b and the value is =
to 0 make text white, if not black. if no o c a the zero it and white...


"Joel" wrote:

You originally said the macro wasn't running when a change was made. When
you set the break point you found the code was being activate. Your problem
may be with the application Enable Events. If you get an error while in the
function it will disable future events until you enable the event again. I
rewrote the macro below the way it should be written.

Also you had this error
from
Range("B5" & i).
to
Range("B" & i).


Private Sub Worksheet_Change(ByVal Target As Range)


Application.EnableEvents = False

For Each cell In Target
If Not Intersect(Target, Range("E5:K27")) Is Nothing Then
'it is one of E5:K27

With cell
i = cell.Row
Select Case Range("B" & i).Value
Case "O", "C", "A"
.FormatConditions.Delete
.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlEqual, _
Formula1:="0"
.FormatConditions(1).Font.ColorIndex = 2
.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlGreater, _
Formula1:="0"
.FormatConditions(1).Font.ColorIndex = 1


Case Else
.Value = 0
.Font.ColorIndex = 2
MsgBox "PLEASE COMPLETE O/C/A"
End Select
End With
End If
Next cell
Application.EnableEvents = True
End Sub




"project manager" wrote:

it toggles through with ut any errors in the code, just how its written/ what
it performs...

"Joel" wrote:

Did you add the break point like I said? Also does other macros run. check
your security settings from worksheet menu Tools - Options - Macro -Security
and make sure you are at medium level. Also when you open your workbook make
sure you check that you want macros enabled.

"project manager" wrote:

its in sheets and when i put O , C or A in column b it stays white.



"Joel" wrote:

First, worksheet change only works on one sheet and must be place in the VBA
Sheet where you are changing data. VBA has 3 types sheets
1) Thisworkbook
2) Modules
3) Sheets - one fror every worksheet in the workbook.

Make sure you are in the correct sheet.


Then place a break point on the SUB line of your macro by clicking with the
mouse on the line and then press F9. Go back to worksheet and make a change.
The macro should stop on the 1st line. Then step through the code using F8.
This should help you isolate the problem.

"project manager" wrote:

hi,

having problems getting my macro to work.

i want it so that you can only edit rows in e5 to k27 once O/C/A is picked
from the drop down in b5 to b27. ie i want people to fill in B5, then the
rest of the row.

if it helps set the scene each row is a task/project, and column b is a type
of work, e to k is sat - fri where hours are entered...

i also have a problem with when data is pasted in it doesnt trigger the
event change.

any help would be awesome,

cheers

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Not Intersect(Target, Range("E5:K27")) Is Nothing And Target.Count = 1 Then
'it is one of E5:K27

i = Target.Row
Select Case Range("B5" & i).Value
Case "O"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select

Case "C"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select
Case "A"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select

Case Else
Application.EnableEvents = False
Range("E" & i & ":K" & i).Value = 0
Range("E" & i & ":K" & i).Font.ColorIndex = 2
MsgBox "PLEASE COMPLETE O/C/A"
Application.EnableEvents = True
End Select
End If
End Sub


joel

macro problem
 

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long

Application.EnableEvents = False

For Each cell In Target
If Not Intersect(Target, Range("E5:K27")) Is Nothing Then
'it is one of E5:K27

With cell

Select Case Range("B5" & i).Value
Case "O", "C", "A"
.FormatConditions.Delete
.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlEqual, _
Formula1:="0"

.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlGreater, _
Formula1:="0"
If cell.Value = 0 Then
.FormatConditions(1).Font.ColorIndex = 2
Else
.FormatConditions(1).Font.ColorIndex = 1
End If

Case Else
.Value = 0
.Font.ColorIndex = 2
MsgBox "PLEASE COMPLETE O/C/A"
End Select
End With
End If
Next cell
Application.EnableEvents = True
End Sub



"project manager" wrote:

its nearly there, just the formatting. if o/c/a is in b and the value is =
to 0 make text white, if not black. if no o c a the zero it and white...


"Joel" wrote:

You originally said the macro wasn't running when a change was made. When
you set the break point you found the code was being activate. Your problem
may be with the application Enable Events. If you get an error while in the
function it will disable future events until you enable the event again. I
rewrote the macro below the way it should be written.

Also you had this error
from
Range("B5" & i).
to
Range("B" & i).


Private Sub Worksheet_Change(ByVal Target As Range)


Application.EnableEvents = False

For Each cell In Target
If Not Intersect(Target, Range("E5:K27")) Is Nothing Then
'it is one of E5:K27

With cell
i = cell.Row
Select Case Range("B" & i).Value
Case "O", "C", "A"
.FormatConditions.Delete
.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlEqual, _
Formula1:="0"
.FormatConditions(1).Font.ColorIndex = 2
.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlGreater, _
Formula1:="0"
.FormatConditions(1).Font.ColorIndex = 1


Case Else
.Value = 0
.Font.ColorIndex = 2
MsgBox "PLEASE COMPLETE O/C/A"
End Select
End With
End If
Next cell
Application.EnableEvents = True
End Sub




"project manager" wrote:

it toggles through with ut any errors in the code, just how its written/ what
it performs...

"Joel" wrote:

Did you add the break point like I said? Also does other macros run. check
your security settings from worksheet menu Tools - Options - Macro -Security
and make sure you are at medium level. Also when you open your workbook make
sure you check that you want macros enabled.

"project manager" wrote:

its in sheets and when i put O , C or A in column b it stays white.



"Joel" wrote:

First, worksheet change only works on one sheet and must be place in the VBA
Sheet where you are changing data. VBA has 3 types sheets
1) Thisworkbook
2) Modules
3) Sheets - one fror every worksheet in the workbook.

Make sure you are in the correct sheet.


Then place a break point on the SUB line of your macro by clicking with the
mouse on the line and then press F9. Go back to worksheet and make a change.
The macro should stop on the 1st line. Then step through the code using F8.
This should help you isolate the problem.

"project manager" wrote:

hi,

having problems getting my macro to work.

i want it so that you can only edit rows in e5 to k27 once O/C/A is picked
from the drop down in b5 to b27. ie i want people to fill in B5, then the
rest of the row.

if it helps set the scene each row is a task/project, and column b is a type
of work, e to k is sat - fri where hours are entered...

i also have a problem with when data is pasted in it doesnt trigger the
event change.

any help would be awesome,

cheers

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Not Intersect(Target, Range("E5:K27")) Is Nothing And Target.Count = 1 Then
'it is one of E5:K27

i = Target.Row
Select Case Range("B5" & i).Value
Case "O"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select

Case "C"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select
Case "A"
Range("E" & i & ":K" & i).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, _
Formula1:="0"
Selection.FormatConditions(1).Font.ColorIndex = 1
Range("m5").Select

Case Else
Application.EnableEvents = False
Range("E" & i & ":K" & i).Value = 0
Range("E" & i & ":K" & i).Font.ColorIndex = 2
MsgBox "PLEASE COMPLETE O/C/A"
Application.EnableEvents = True
End Select
End If
End Sub



All times are GMT +1. The time now is 07:50 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com