ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   macro for copying background color (https://www.excelbanter.com/excel-programming/401404-macro-copying-background-color.html)

MelB

macro for copying background color
 
I need a macro that does the following:

If a cell contains the text "N/A" I need the background color of the cell
adjacent and to the left of it, copied and pasted into the cell with "N/A"

So, B1 has "N/A". I need the background color from A1 copied into cell B1,
leaving the text "N/A" intact.

If B2 has "N/A" I need the background or fill color from cell A2 copied into
B2.

In all cases the fill color is just a solid color. I need no other
formatting or content copied, just the fill color.


OssieMac

macro for copying background color
 
Hi,

I hope that I have interpreted correctly. You said contains "N/A", not
equals "N/A" meaning that it could be anywhere in a longer string. Also you
have not said that it contains the error #N/A.

Therefore macro is for what I understand although it will also work if
equals "N/A" but need a modification if it is #N/A due to a formula error.
(See below macro code)

Sub Copy_Inter_Color()

Dim rngB As Range
Dim c As Range

'Assign range of cells in column B with values to a variable
With Sheets("Sheet1")
Set rngB = .Range(.Cells(1, "B"), _
.Cells(.Rows.Count, "B").End(xlUp))
End With

For Each c In rngB
If InStr(1, c, "N/A") 0 Then
c.Interior.Color = c.Offset(0, -1).Interior.Color
End If
Next c

End Sub



Replace the If test with the following line for #N/A error
'If WorksheetFunction.IsNA(c) Then


--
Regards,

OssieMac


"MelB" wrote:

I need a macro that does the following:

If a cell contains the text "N/A" I need the background color of the cell
adjacent and to the left of it, copied and pasted into the cell with "N/A"

So, B1 has "N/A". I need the background color from A1 copied into cell B1,
leaving the text "N/A" intact.

If B2 has "N/A" I need the background or fill color from cell A2 copied into
B2.

In all cases the fill color is just a solid color. I need no other
formatting or content copied, just the fill color.


MelB

macro for copying background color
 
Thanks for the help.

Actually, I did mean equals "N/A" as in Not Applicable.

I used your code and got the following:

Runtime Error 9:
Subscript out of range.
The debugger highlights that line with sheets (Sheet 1)

Also, I should elaborate that this needs to work for the entire sheet.
Whereever "N/A" appears the background color needs to be copied from the cell
adjacent and to the left of it.

Again, thanks for the help.

"OssieMac" wrote:

Hi,

I hope that I have interpreted correctly. You said contains "N/A", not
equals "N/A" meaning that it could be anywhere in a longer string. Also you
have not said that it contains the error #N/A.

Therefore macro is for what I understand although it will also work if
equals "N/A" but need a modification if it is #N/A due to a formula error.
(See below macro code)

Sub Copy_Inter_Color()

Dim rngB As Range
Dim c As Range

'Assign range of cells in column B with values to a variable
With Sheets("Sheet1")
Set rngB = .Range(.Cells(1, "B"), _
.Cells(.Rows.Count, "B").End(xlUp))
End With

For Each c In rngB
If InStr(1, c, "N/A") 0 Then
c.Interior.Color = c.Offset(0, -1).Interior.Color
End If
Next c

End Sub



Replace the If test with the following line for #N/A error
'If WorksheetFunction.IsNA(c) Then


--
Regards,

OssieMac


"MelB" wrote:

I need a macro that does the following:

If a cell contains the text "N/A" I need the background color of the cell
adjacent and to the left of it, copied and pasted into the cell with "N/A"

So, B1 has "N/A". I need the background color from A1 copied into cell B1,
leaving the text "N/A" intact.

If B2 has "N/A" I need the background or fill color from cell A2 copied into
B2.

In all cases the fill color is just a solid color. I need no other
formatting or content copied, just the fill color.


Dave Peterson

macro for copying background color
 
You have to change this line:
With Sheets("Sheet1")
to work with the name you see in the worksheet tab in excel:
With Sheets("my worksheet name here")




MelB wrote:

Thanks for the help.

Actually, I did mean equals "N/A" as in Not Applicable.

I used your code and got the following:

Runtime Error 9:
Subscript out of range.
The debugger highlights that line with sheets (Sheet 1)

Also, I should elaborate that this needs to work for the entire sheet.
Whereever "N/A" appears the background color needs to be copied from the cell
adjacent and to the left of it.

Again, thanks for the help.

"OssieMac" wrote:

Hi,

I hope that I have interpreted correctly. You said contains "N/A", not
equals "N/A" meaning that it could be anywhere in a longer string. Also you
have not said that it contains the error #N/A.

Therefore macro is for what I understand although it will also work if
equals "N/A" but need a modification if it is #N/A due to a formula error.
(See below macro code)

Sub Copy_Inter_Color()

Dim rngB As Range
Dim c As Range

'Assign range of cells in column B with values to a variable
With Sheets("Sheet1")
Set rngB = .Range(.Cells(1, "B"), _
.Cells(.Rows.Count, "B").End(xlUp))
End With

For Each c In rngB
If InStr(1, c, "N/A") 0 Then
c.Interior.Color = c.Offset(0, -1).Interior.Color
End If
Next c

End Sub



Replace the If test with the following line for #N/A error
'If WorksheetFunction.IsNA(c) Then


--
Regards,

OssieMac


"MelB" wrote:

I need a macro that does the following:

If a cell contains the text "N/A" I need the background color of the cell
adjacent and to the left of it, copied and pasted into the cell with "N/A"

So, B1 has "N/A". I need the background color from A1 copied into cell B1,
leaving the text "N/A" intact.

If B2 has "N/A" I need the background or fill color from cell A2 copied into
B2.

In all cases the fill color is just a solid color. I need no other
formatting or content copied, just the fill color.


--

Dave Peterson

MelB

macro for copying background color
 
I tried this. Still not working. Any other suggestions?


"Dave Peterson" wrote:

You have to change this line:
With Sheets("Sheet1")
to work with the name you see in the worksheet tab in excel:
With Sheets("my worksheet name here")




MelB wrote:

Thanks for the help.

Actually, I did mean equals "N/A" as in Not Applicable.

I used your code and got the following:

Runtime Error 9:
Subscript out of range.
The debugger highlights that line with sheets (Sheet 1)

Also, I should elaborate that this needs to work for the entire sheet.
Whereever "N/A" appears the background color needs to be copied from the cell
adjacent and to the left of it.

Again, thanks for the help.

"OssieMac" wrote:

Hi,

I hope that I have interpreted correctly. You said contains "N/A", not
equals "N/A" meaning that it could be anywhere in a longer string. Also you
have not said that it contains the error #N/A.

Therefore macro is for what I understand although it will also work if
equals "N/A" but need a modification if it is #N/A due to a formula error.
(See below macro code)

Sub Copy_Inter_Color()

Dim rngB As Range
Dim c As Range

'Assign range of cells in column B with values to a variable
With Sheets("Sheet1")
Set rngB = .Range(.Cells(1, "B"), _
.Cells(.Rows.Count, "B").End(xlUp))
End With

For Each c In rngB
If InStr(1, c, "N/A") 0 Then
c.Interior.Color = c.Offset(0, -1).Interior.Color
End If
Next c

End Sub



Replace the If test with the following line for #N/A error
'If WorksheetFunction.IsNA(c) Then


--
Regards,

OssieMac


"MelB" wrote:

I need a macro that does the following:

If a cell contains the text "N/A" I need the background color of the cell
adjacent and to the left of it, copied and pasted into the cell with "N/A"

So, B1 has "N/A". I need the background color from A1 copied into cell B1,
leaving the text "N/A" intact.

If B2 has "N/A" I need the background or fill color from cell A2 copied into
B2.

In all cases the fill color is just a solid color. I need no other
formatting or content copied, just the fill color.


--

Dave Peterson


Dave Peterson

macro for copying background color
 
If you're getting the subscript out of range on that line, then you haven't
spelled the name of that worksheet correctly.

Maybe you have leading/trailing/embedded spaces that you're missing.

MelB wrote:

I tried this. Still not working. Any other suggestions?

"Dave Peterson" wrote:

You have to change this line:
With Sheets("Sheet1")
to work with the name you see in the worksheet tab in excel:
With Sheets("my worksheet name here")




MelB wrote:

Thanks for the help.

Actually, I did mean equals "N/A" as in Not Applicable.

I used your code and got the following:

Runtime Error 9:
Subscript out of range.
The debugger highlights that line with sheets (Sheet 1)

Also, I should elaborate that this needs to work for the entire sheet.
Whereever "N/A" appears the background color needs to be copied from the cell
adjacent and to the left of it.

Again, thanks for the help.

"OssieMac" wrote:

Hi,

I hope that I have interpreted correctly. You said contains "N/A", not
equals "N/A" meaning that it could be anywhere in a longer string. Also you
have not said that it contains the error #N/A.

Therefore macro is for what I understand although it will also work if
equals "N/A" but need a modification if it is #N/A due to a formula error.
(See below macro code)

Sub Copy_Inter_Color()

Dim rngB As Range
Dim c As Range

'Assign range of cells in column B with values to a variable
With Sheets("Sheet1")
Set rngB = .Range(.Cells(1, "B"), _
.Cells(.Rows.Count, "B").End(xlUp))
End With

For Each c In rngB
If InStr(1, c, "N/A") 0 Then
c.Interior.Color = c.Offset(0, -1).Interior.Color
End If
Next c

End Sub



Replace the If test with the following line for #N/A error
'If WorksheetFunction.IsNA(c) Then


--
Regards,

OssieMac


"MelB" wrote:

I need a macro that does the following:

If a cell contains the text "N/A" I need the background color of the cell
adjacent and to the left of it, copied and pasted into the cell with "N/A"

So, B1 has "N/A". I need the background color from A1 copied into cell B1,
leaving the text "N/A" intact.

If B2 has "N/A" I need the background or fill color from cell A2 copied into
B2.

In all cases the fill color is just a solid color. I need no other
formatting or content copied, just the fill color.


--

Dave Peterson


--

Dave Peterson

MelB

macro for copying background color
 
It is actually working.

I changed the "B's" to "F's" which is the column where the data is that this
is supposed to affect and it worked. So how do I expand this to either look
anywhere in the sheet for "N/A" or expand it to specifically run in columns:
F, I, L, O, R, U.

thanks again.

"Dave Peterson" wrote:

You have to change this line:
With Sheets("Sheet1")
to work with the name you see in the worksheet tab in excel:
With Sheets("my worksheet name here")




MelB wrote:

Thanks for the help.

Actually, I did mean equals "N/A" as in Not Applicable.

I used your code and got the following:

Runtime Error 9:
Subscript out of range.
The debugger highlights that line with sheets (Sheet 1)

Also, I should elaborate that this needs to work for the entire sheet.
Whereever "N/A" appears the background color needs to be copied from the cell
adjacent and to the left of it.

Again, thanks for the help.

"OssieMac" wrote:

Hi,

I hope that I have interpreted correctly. You said contains "N/A", not
equals "N/A" meaning that it could be anywhere in a longer string. Also you
have not said that it contains the error #N/A.

Therefore macro is for what I understand although it will also work if
equals "N/A" but need a modification if it is #N/A due to a formula error.
(See below macro code)

Sub Copy_Inter_Color()

Dim rngB As Range
Dim c As Range

'Assign range of cells in column B with values to a variable
With Sheets("Sheet1")
Set rngB = .Range(.Cells(1, "B"), _
.Cells(.Rows.Count, "B").End(xlUp))
End With

For Each c In rngB
If InStr(1, c, "N/A") 0 Then
c.Interior.Color = c.Offset(0, -1).Interior.Color
End If
Next c

End Sub



Replace the If test with the following line for #N/A error
'If WorksheetFunction.IsNA(c) Then


--
Regards,

OssieMac


"MelB" wrote:

I need a macro that does the following:

If a cell contains the text "N/A" I need the background color of the cell
adjacent and to the left of it, copied and pasted into the cell with "N/A"

So, B1 has "N/A". I need the background color from A1 copied into cell B1,
leaving the text "N/A" intact.

If B2 has "N/A" I need the background or fill color from cell A2 copied into
B2.

In all cases the fill color is just a solid color. I need no other
formatting or content copied, just the fill color.


--

Dave Peterson


OssieMac

macro for copying background color
 
Hi Mel,

Two macros. The first one will work with the entire used range in the
worksheet and the second one will work with the used range in each of the
specific columns. The second one should run faster because it will process
less cells.

You will need to edit the worksheet name and insert your worksheet name.

And to thanks Dave for filling in while I was unavailable.

Sub Copy_Inter_Color_2()

Dim rngAll As Range
Dim c As Range

With Sheets("Sheet1")
Set rngAll = .UsedRange
End With

For Each c In rngAll
If InStr(1, c, "N/A") 0 Then
c.Interior.Color = c.Offset(0, -1).Interior.Color
End If
Next c

End Sub




Sub Copy_Inter_Color_3()
Dim rngF As Range
Dim rngI As Range
Dim rngL As Range
Dim rngO As Range
Dim rngR As Range
Dim rngU As Range
Dim rngAll As Range

Dim c As Range

'Edit Sheet1 to your sheet name
With Sheets("Sheet1")
Set rngF = .Range(.Cells(1, "F"), _
.Cells(.Rows.Count, "F").End(xlUp))
Set rngI = .Range(.Cells(1, "I"), _
.Cells(.Rows.Count, "I").End(xlUp))
Set rngL = .Range(.Cells(1, "L"), _
.Cells(.Rows.Count, "L").End(xlUp))
Set rngO = .Range(.Cells(1, "O"), _
.Cells(.Rows.Count, "O").End(xlUp))
Set rngR = .Range(.Cells(1, "R"), _
.Cells(.Rows.Count, "R").End(xlUp))
Set rngU = .Range(.Cells(1, "U"), _
.Cells(.Rows.Count, "U").End(xlUp))

Set rngAll = Union(rngF, rngI, rngL, _
rngO, rngR, rngU)
End With

For Each c In rngAll
If InStr(1, c, "N/A") 0 Then
c.Interior.Color = c.Offset(0, -1).Interior.Color
End If
Next c

End Sub


--
Regards,

OssieMac


"MelB" wrote:

It is actually working.

I changed the "B's" to "F's" which is the column where the data is that this
is supposed to affect and it worked. So how do I expand this to either look
anywhere in the sheet for "N/A" or expand it to specifically run in columns:
F, I, L, O, R, U.

thanks again.

"Dave Peterson" wrote:

You have to change this line:
With Sheets("Sheet1")
to work with the name you see in the worksheet tab in excel:
With Sheets("my worksheet name here")




MelB wrote:

Thanks for the help.

Actually, I did mean equals "N/A" as in Not Applicable.

I used your code and got the following:

Runtime Error 9:
Subscript out of range.
The debugger highlights that line with sheets (Sheet 1)

Also, I should elaborate that this needs to work for the entire sheet.
Whereever "N/A" appears the background color needs to be copied from the cell
adjacent and to the left of it.

Again, thanks for the help.

"OssieMac" wrote:

Hi,

I hope that I have interpreted correctly. You said contains "N/A", not
equals "N/A" meaning that it could be anywhere in a longer string. Also you
have not said that it contains the error #N/A.

Therefore macro is for what I understand although it will also work if
equals "N/A" but need a modification if it is #N/A due to a formula error.
(See below macro code)

Sub Copy_Inter_Color()

Dim rngB As Range
Dim c As Range

'Assign range of cells in column B with values to a variable
With Sheets("Sheet1")
Set rngB = .Range(.Cells(1, "B"), _
.Cells(.Rows.Count, "B").End(xlUp))
End With

For Each c In rngB
If InStr(1, c, "N/A") 0 Then
c.Interior.Color = c.Offset(0, -1).Interior.Color
End If
Next c

End Sub



Replace the If test with the following line for #N/A error
'If WorksheetFunction.IsNA(c) Then


--
Regards,

OssieMac


"MelB" wrote:

I need a macro that does the following:

If a cell contains the text "N/A" I need the background color of the cell
adjacent and to the left of it, copied and pasted into the cell with "N/A"

So, B1 has "N/A". I need the background color from A1 copied into cell B1,
leaving the text "N/A" intact.

If B2 has "N/A" I need the background or fill color from cell A2 copied into
B2.

In all cases the fill color is just a solid color. I need no other
formatting or content copied, just the fill color.


--

Dave Peterson



All times are GMT +1. The time now is 05:02 PM.

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