What kind of error is showing (#N/A, #Value, etc.)? Also, in which cells are the errors? Why are the cells generating errors (for example, missing data in reference cell)?
I never knew this until now, but apparently, ampersanding two numbers concatenates them. So colTimeTillDue & colMailsendt will result in 1215 if they are 12 and 15, respectively. Weird. Anyway, that's not what you want to do: it will make the column 1215 (whatever letter combination that is) to be the one that row 3 is used from. Stick with just a single column to begin working on each row. Once you have the row via the rCell object, you can jump around the columns. For example, to go to the colMailsendt column, you can use Cells(rCell.row, colMailsendt).
It might be best to separate the tests simply so you can understand it a little better. We'll nest the If statements based on your ordering. If daysDue < 90, then if row not hidden, then if mailsendt is blank, then generate the email.
VBA Code:
For Each rCell In Range(Cells(3, colTimeTillDue), Cells(Rows.Count, colTimeTillDue).End(xlUp))
If rCell.Value < 91 Then
If rCell.Height > 0 Then
If Cells(rCell.Row, colMailsendt).Value = "" Then
'put code here
End If
End If
End If
Next rCell
Also, you tried to check for a blank value by using rCell.Value = """". This isn't actually a blank string. Instead, it is a string of a single double-quote: ". There are a couple different ways of having a string include the double-quote character. One is to use Chr(34), which is the ASCII code for that character. Often, I will put this character in a string like this simply to ensure I am aware of where the double-quotes are supposed to go:
VBA Code:
str = "Inserting the double-quote " & Chr(34) & " into a string."
This produces the string: Inserting the double-quote " into a string.
The other way is within a string of code (which requires the double-quotes for strings) by putting 2 back-to-back double-quotes. My same sentence above can then also be generated as:
VBA Code:
str = "Inserting the double-quote "" into a string."
The two double-quotes back to back do not end and start the string again right away. If you were to separate them by a space, then the compiler would be confused.
You might then see why you were comparing rCell.Value to a single double-quote. From the four you had next to each other, the first and last are required to designate a string; then it is left to the two inside the string, which produces a single double-quote in the string variable.