ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Need help with code. (https://www.excelbanter.com/excel-programming/367629-need-help-code.html)

Damien

Need help with code.
 
What is wrong with this code? I keep getting a Type Mismatch error. I am
trying to match the words red, yellow and green which appear in 6 cells above
(lets say C37:C47). A cell below (C49) is to show the word red if in fact
'red' appears in any the 6 cells. However if the word red does not appear and
the word yellow appears I need the cell below to display the word yellow.
Also if the words red and yellow do not appear I need the word green to
appear in the cell below.

Any help would be greatly appreciated (still a greenhorn at this)


Private Sub CommandButton1_Click()

If Sheets("Form").Range("$C$37:$C$47").Value = "Red" Then
Sheets("Form").Range("$C$49").Value = "Red"
End If
If Sheets("Form").Range("$C$37:$C$47").Value = "Yellow" Then
Sheets("Form").Range("$C$49").Value = "Yellow"
End If
If Sheets("Form").Range("$C$37:$C$47").Value = "Green" Then
Sheets("Form").Range("$C$49").Value = "Green"
End If

End Sub

NickHK

Need help with code.
 
Damien,
Depending on where your list of colours is coming from, here's one way:

Private Sub CommandButton1_Click()
Const AllColours As String = "Red,Yellow,Green"
Dim ColourValues As Variant
Dim RetVal As Long
Dim i As Long
On Error Resume Next
ColourValues = Split(AllColours, ",")
With Sheets("Form")
For i = 0 To UBound(ColourValues)
RetVal = Application.WorksheetFunction.Match(ColourValues(i ),
..Range("$C$37:$C$47"), 0)
If Err.Number = 0 Then
.Range("$C$49").Value = ColourValues(i)
Exit Sub
End If
Err.Clear
Next
.Range("$C$49").Value = "No Match"
End With
End Sub

Using Find or VLookUp would be similar.
You could achieve the same directly on the worksheet, with Match or VLookUp,
or write a UDF similar to the above, passing in 2 argument, rangetosearch,
rangeofcolors. e.g
Public Function MatchColour(argRangeToSearch As Range, argRangeOfColours As
Range) As String
....etc
then call it from the sheet in C49, assuming you colours in range("E1:E3")
=MatchColour(C37:C47,E1:E3)

Obviously, your list of colours have to arranged in the order of importance.

NickHK

"Damien" wrote in message
...
What is wrong with this code? I keep getting a Type Mismatch error. I am
trying to match the words red, yellow and green which appear in 6 cells

above
(lets say C37:C47). A cell below (C49) is to show the word red if in

fact
'red' appears in any the 6 cells. However if the word red does not appear

and
the word yellow appears I need the cell below to display the word yellow.
Also if the words red and yellow do not appear I need the word green to
appear in the cell below.

Any help would be greatly appreciated (still a greenhorn at this)


Private Sub CommandButton1_Click()

If Sheets("Form").Range("$C$37:$C$47").Value = "Red" Then
Sheets("Form").Range("$C$49").Value = "Red"
End If
If Sheets("Form").Range("$C$37:$C$47").Value = "Yellow" Then
Sheets("Form").Range("$C$49").Value = "Yellow"
End If
If Sheets("Form").Range("$C$37:$C$47").Value = "Green" Then
Sheets("Form").Range("$C$49").Value = "Green"
End If

End Sub




Damien

Need help with code.
 
Nick,

Thanks a million, the code works a treat!

"NickHK" wrote:

Damien,
Depending on where your list of colours is coming from, here's one way:

Private Sub CommandButton1_Click()
Const AllColours As String = "Red,Yellow,Green"
Dim ColourValues As Variant
Dim RetVal As Long
Dim i As Long
On Error Resume Next
ColourValues = Split(AllColours, ",")
With Sheets("Form")
For i = 0 To UBound(ColourValues)
RetVal = Application.WorksheetFunction.Match(ColourValues(i ),
..Range("$C$37:$C$47"), 0)
If Err.Number = 0 Then
.Range("$C$49").Value = ColourValues(i)
Exit Sub
End If
Err.Clear
Next
.Range("$C$49").Value = "No Match"
End With
End Sub

Using Find or VLookUp would be similar.
You could achieve the same directly on the worksheet, with Match or VLookUp,
or write a UDF similar to the above, passing in 2 argument, rangetosearch,
rangeofcolors. e.g
Public Function MatchColour(argRangeToSearch As Range, argRangeOfColours As
Range) As String
....etc
then call it from the sheet in C49, assuming you colours in range("E1:E3")
=MatchColour(C37:C47,E1:E3)

Obviously, your list of colours have to arranged in the order of importance.

NickHK

"Damien" wrote in message
...
What is wrong with this code? I keep getting a Type Mismatch error. I am
trying to match the words red, yellow and green which appear in 6 cells

above
(lets say C37:C47). A cell below (C49) is to show the word red if in

fact
'red' appears in any the 6 cells. However if the word red does not appear

and
the word yellow appears I need the cell below to display the word yellow.
Also if the words red and yellow do not appear I need the word green to
appear in the cell below.

Any help would be greatly appreciated (still a greenhorn at this)


Private Sub CommandButton1_Click()

If Sheets("Form").Range("$C$37:$C$47").Value = "Red" Then
Sheets("Form").Range("$C$49").Value = "Red"
End If
If Sheets("Form").Range("$C$37:$C$47").Value = "Yellow" Then
Sheets("Form").Range("$C$49").Value = "Yellow"
End If
If Sheets("Form").Range("$C$37:$C$47").Value = "Green" Then
Sheets("Form").Range("$C$49").Value = "Green"
End If

End Sub






All times are GMT +1. The time now is 11:16 AM.

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