Thema Datum  Von Nutzer Rating
Antwort
07.04.2016 10:19:29 kallapatti
NotSolved
07.04.2016 19:08:57 Gast70117
NotSolved
07.04.2016 21:53:04 kallapatti
NotSolved
Blau auch ne Lösung
10.04.2016 18:41:58 Gast70117
NotSolved

Ansicht des Beitrags:
Von:
Gast70117
Datum:
10.04.2016 18:41:58
Views:
1076
Rating: Antwort:
  Ja
Thema:
auch ne Lösung

Dann eben NICHT die Zahlen zufällig, sondern einen Stapel bilden und den MISCHEN

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
Option Explicit
Dim arrDef() As String
Dim arrNamen() As Variant
 
Sub Nummerieren()
Dim rngNamen As Range, c As Range
Dim rngNummern As Range, x As Long, y As Long
Dim intRnd As Integer, intNamen As Long
Dim intStart As Integer, intx As Integer
 
   'Ausnahmen
   arrDef = Split(Cells(4, 2).Formula, ",")
    
   'Namen in Spalte C
   Set rngNamen = Range(Cells(5, 3), Cells(Rows.Count, 3).End(xlUp))
   intNamen = rngNamen.Cells.Count - WorksheetFunction.CountBlank(rngNamen)
       
   'Array der Namen-Spalten
   ReDim arrNamen(1 To intNamen, 1 To 2)
   For Each c In rngNamen
      If c.Value <> "" Then
         y = y + 1
         arrNamen(y, 1) = c.Row
         Do
            x = x + 1
            If IsDef(x) = False Then
               arrNamen(y, 2) = x
               Exit Do
            End If
         Loop
      End If
   Next c
    
   'arrNamen mischen
   Mischen
   'arrNamen eintragen
   Eintragen
'
End Sub
 
Private Sub Eintragen()
Dim j As Long
Dim lngAlt As Long, lngRnd As Long
For j = LBound(arrNamen) To UBound(arrNamen)
   Cells(arrNamen(j, 1), 2).Value = arrNamen(j, 2)
Next j
End Sub
 
Private Sub Mischen()
Dim j As Long
Dim lngAlt As Long, lngRnd As Long
For j = LBound(arrNamen) To UBound(arrNamen)
   lngAlt = arrNamen(j, 2)
   lngRnd = WorksheetFunction.RandBetween(LBound(arrNamen), UBound(arrNamen))
   arrNamen(j, 2) = arrNamen(lngRnd, 2)
   arrNamen(lngRnd, 2) = lngAlt
Next j
End Sub
 
Private Function IsDef(ByVal Zahl As Long) As Boolean
Dim i As Long
For i = LBound(arrDef) To UBound(arrDef)
   If Zahl = CLng(arrDef(i)) Then
      IsDef = True
      Exit Function
   End If
Next i
IsDef = False
End Function

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
07.04.2016 10:19:29 kallapatti
NotSolved
07.04.2016 19:08:57 Gast70117
NotSolved
07.04.2016 21:53:04 kallapatti
NotSolved
Blau auch ne Lösung
10.04.2016 18:41:58 Gast70117
NotSolved