Evaluating Dice Poker results
Some general notes:


GetEnum function:



Select Case value
        Case 0
            GetEnum = "none"



This kind of hard-coding of values is very risky, if you change the enumeration your function will break. It should be Case none ...


EvaluateHand


What if you have not exactly 5 numbers? 
you're right, usage of GoTo should be very limited, you could avoid majority of it by ElseIf or Select Case
also, I wouldn't have went so much details like the snippet below, just set the flags during the For, then check the flags at the end and set score




 If bucket(i) = 3 Then
            If twoFlag Then
                score = fullhouse
                GoTo Eval




I don't think an array is the best fit for this purpose, I'd suggest to use a dictionary, like here below:




Private Function EvaluateHand_MJ(ByVal dice As Variant) As String
    Dim values As New Dictionary
    Dim i As Long
    Dim result As Combination

    result = Combination.none

    With values
        For i = LBound(dice) To UBound(dice)
            If .Exists(dice(i)) Then
                .Item(dice(i)) = .Item(dice(i)) + 1
            Else
                .Add dice(i), 1
            End If
        Next i

        Select Case .Count  ' check number of distinct values
        Case 1          ' all dices are the same, must be a yacht
            result = Combination.yacht
        Case 2         ' two distinct numbers: four (4+1) or a fullhouse(3+2)
            If .Item(.Keys(1)) = 2 Or .Item(.Keys(1)) = 3 Then
                result = Combination.fullhouse
            Else
                result = Combination.four
            End If
        Case 3         ' 3 distinct: two pairs (2+2+1) or a three (3+1+1)
            For i = 1 To 3
                Select Case .Item(.Keys(i))
                Case Is = 2
                    result = Combination.twopair
                Case Is = 3
                    result = Combination.three
                End Select
            Next i
        Case 4         ' 3 unique numbers and a pair
            result = Combination.pair
        Case 5         ' straight (1 or 6 missing) or nothing
            For i = 1 To 6
                If Not .Exists(CStr(i)) Then
                    If i = 1 Then
                        result = Combination.bigstraight
                    ElseIf i = 6 Then
                        result = Combination.smallstraight
                    End If
                End If
            Next i
        End Select
    End With

    EvaluateHand_MJ = GetEnum(result) &amp; " "
End Function