
08-08-18, 11:20
|
| Όνομα: Γιώργος Έκδοση λογισμικού Office: Ms-Office 2010 Γλώσσα λογισμικού Office: Ελληνική, Αγγλική | | Εγγραφή: 18-06-2010
Μηνύματα: 3.674
| |
Δημήτρη, για να κάνουμε σωστή δουλειά, άλλαξε την ομώνυμη ρουτίνα του προηγούμενου κώδικα με την : Κώδικας: Sub Combinations()
Const startCel As String = "A1" 'Το κελί στο οποίο θα γίνει η 1η καταχώρηση
Dim n As Integer, m As Integer, rng As Range, numCbn As Long
n = InputBox("Number of items?", "Combinations")
m = InputBox("Taken how many at a time?", "Combinations")
mm = m
Application.ScreenUpdating = False
numCbn = Application.WorksheetFunction.Combin(n, m)
If numCbn >= Rows.Count - 2 - Range(startCel).Row Then
MsgBox "Το πλήθος των συνδυασμών: " & Format(numCbn, "#,###") & vbCrLf & _
"υπερβαίνει το πλήθος των γραμμών του φύλλου", vbCritical
Else
Set rng = Range(startCel)
ReDim x(1 To numCbn, 1 To m) As Variant
R = 0
Comb2 n, m, 1, ""
rng.Resize(UBound(x, 1) + 2, mm + 2).ClearContents
rng.Resize(UBound(x, 1), mm).Value = x
End If
End Sub
Στον κώδικα ελέγχεται αν το πλήθος των συνδυασμών είναι μικρότερο από το πλήθος των γραμμών του φύλλου και αν δεν είναι εμφανίζεται μήνυμα και οι συνδυασμοί δεν υπολογίζονται
Χωρίς τον έλεγχο θα υπολογίζονταν οι συνδυασμοί (θα απαιτούσε κάποιο χρόνο) και ο κώδικας θα χτυπούσε..
|