I forget this every time. 

C#

 public bool NumbersOverlap(int Set1Min, int Set1Max, 
                           int Set2Min, int Set2Max)
{
    return (Set2Min >= Set1Min && Set2Min <= Set1Max) || 
           (Set2Max <= Set1Max && Set2Max >= Set1Min) || 
           (Set2Min <= Set1Min && Set2Max >= Set1Max);
}

 

VB 6

Private Function NumbersOverlap(Set1Min As Integer, Set1Max As Integer, _ 
                                Set2Min As Integer, Set2Max As Integer) As Boolean
 
    NumbersOverlap = (Set2Min >= Set1Min And Set2Min <= Set1Max) _ 
                  Or (Set2Max <= Set1Max And Set2Max >= Set1Min) _ 
                  Or (Set2Min <= Set1Min And Set2Max >= Set1Max)
 
End Function

 

Unit Tests

Console.WriteLine(NumbersOverlap(1, 10, 11, 15));  // false
Console.WriteLine(NumbersOverlap(8, 19, 19, 25));  // true
Console.WriteLine(NumbersOverlap(8, 19, 19, 25));  // true
Console.WriteLine(NumbersOverlap(8, 20, 19, 25));  // true
Console.WriteLine(NumbersOverlap(8, 20, 1, 25));   // true
Console.WriteLine(NumbersOverlap(8, 30, 1, 25));   // true
Console.WriteLine(NumbersOverlap(8, 25, 1, 25));   // true
Console.WriteLine(NumbersOverlap(25, 50, 1, 25));  // true