Case blocks evaluate top-to-bottom, and whichever branch first matches the condition (i.e. whichever is the first to be True) will be the winning condition.
Thus, you should evaluate the most constrained rules first, and the less constrained ones last - meaning you need to check for an equilateral triangle before you check for an isosceles one, since an equilateral triangle is also isosceles, as Warcupine already noted.
But there's a problem with the equilateral condition:
Case a = b = c
VBA will evaluate a = b as a Boolean expression, and then take the result of that and compare it to c - so if c is any non-zero value, a = b = c will be True regardless of the value of c (assuming non-zero) if both a and b are equal.
If the function is intended to be used as a UDF, consider avoiding MsgBox calls, and returning a Variant so that you can yield an actual Excel cell error value given invalid inputs - note that what you call a "regular triangle" probably falls under the definition of a scalene triangle:
Public Function TriangleType(ByVal a As Double, ByVal b As Double, ByVal c As Double) As Variant
If a <= 0 Or b <= 0 Or c <= 0 Then
TriangleType = CVErr(xlErrValue)
Exit Function
End If
Select Case True
Case a + b <= c Or a + c <= b Or c + b <= a
TriangleType = CVErr(xlErrValue)
Case a = b And b = c And c = a
TriangleType = "Equilateral"
Case a = b Or c = b Or a = c
TriangleType = "Isosceles"
'Case (a + b) ^ 2 = c ^ 2 Or (b + c) ^ 2 = b ^ 2 Or (c + a) ^ 2 = a ^ 2
Case a ^ 2 + b ^ 2 = c ^ 2 Or b ^ 2 + c ^ 2 = a ^ 2 Or c ^ 2 + a ^ 2 = b ^ 2
TriangleType = "Right Triangle"
Case Else
TriangleType = "Scalene Triangle"
End Select
End Function
andstatements.