回答編集履歴
2
コード微修正
    
        answer	
    CHANGED
    
    | 
         @@ -68,7 +68,7 @@ 
     | 
|
| 
       68 
68 
     | 
    
         
             
            '               宣言例 Dim MyArray As Variant                   '
         
     | 
| 
       69 
69 
     | 
    
         
             
            ' 目的      : 配列をランダムに並べ替える                 '
         
     | 
| 
       70 
70 
     | 
    
         
             
            ' 戻り値    : なし                                              '
         
     | 
| 
       71 
     | 
    
         
            -
            ' 使用例   : AryShuffle(MyArray)                               '
         
     | 
| 
      
 71 
     | 
    
         
            +
            ' 使用例   : Call AryShuffle(MyArray)                               '
         
     | 
| 
       72 
72 
     | 
    
         
             
            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
         
     | 
| 
       73 
73 
     | 
    
         
             
            Public Sub AryShuffle(ByRef MyAry)
         
     | 
| 
       74 
74 
     | 
    
         
             
            Dim i As Integer, buf, UB As Integer, P As Integer
         
     | 
1
コード追記
    
        answer	
    CHANGED
    
    | 
         @@ -29,4 +29,58 @@ 
     | 
|
| 
       29 
29 
     | 
    
         
             
            配列にセル番地を格納しておいて、上記の関数でシャッフルします。
         
     | 
| 
       30 
30 
     | 
    
         
             
            Forループ処理で順にセル番地に名前を転記していきます。
         
     | 
| 
       31 
31 
     | 
    
         | 
| 
       32 
     | 
    
         
            -
            これだと作業シートを使わずできます。
         
     | 
| 
      
 32 
     | 
    
         
            +
            これだと作業シートを使わずできます。
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
            この方法でコードを書いてみたのでご参考に。
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            ```vba
         
     | 
| 
      
 37 
     | 
    
         
            +
            Public Sub SetSeatingChart()
         
     | 
| 
      
 38 
     | 
    
         
            +
                Dim SeatList As String 'セル番地をカンマ区切りで格納
         
     | 
| 
      
 39 
     | 
    
         
            +
                SeatList = _
         
     | 
| 
      
 40 
     | 
    
         
            +
                "N11,N15,N19,N23,N31,N35,N39,N43," & _
         
     | 
| 
      
 41 
     | 
    
         
            +
                           "R11,R15,R19,R23,R31,R35,R39,R43," & _
         
     | 
| 
      
 42 
     | 
    
         
            +
                           "W11,W15,W19,W23,W31,W35,W39,W43," & _
         
     | 
| 
      
 43 
     | 
    
         
            +
                           "AF11,AF15,AF19,AF23,AF31,AF35,AF39,AF43," & _
         
     | 
| 
      
 44 
     | 
    
         
            +
                           "AF11,AF15,AF19,AF23,AF31,AF35,AF39,AG43," & _
         
     | 
| 
      
 45 
     | 
    
         
            +
                           "AP19,AP23,AP31,AP35," & _
         
     | 
| 
      
 46 
     | 
    
         
            +
                           "AI19,AI23,AI31,AI35," & _
         
     | 
| 
      
 47 
     | 
    
         
            +
                           "AT11,AT15,AT19,AT23,AT31,AT35,AT39,AT43," & _
         
     | 
| 
      
 48 
     | 
    
         
            +
                           "AY11,AY15,AY19,AY23,AY31,AY35,AY39,AY43," & _
         
     | 
| 
      
 49 
     | 
    
         
            +
                           "BC11,BC15,BC19,BC23,BC31,BC35,BC39,BC43," & _
         
     | 
| 
      
 50 
     | 
    
         
            +
                           "BH11,BH15,BH19,BH23,BH31,BH35,BH39,BH43," & _
         
     | 
| 
      
 51 
     | 
    
         
            +
                           "BL11,BL15,BL19,BL23,BL31,BL35,BL39,BL43"
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                Dim ArySeat
         
     | 
| 
      
 54 
     | 
    
         
            +
                ArySeat = Split(SeatList, ",") '配列に変換
         
     | 
| 
      
 55 
     | 
    
         
            +
                Call AryShuffle(ArySeat)       '配列をシャッフル
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                Dim AryName
         
     | 
| 
      
 58 
     | 
    
         
            +
                AryName = Range("A1:A88").Value  'A1:A87セルに名前が記入されているとする
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                Dim i As Long
         
     | 
| 
      
 61 
     | 
    
         
            +
                For i = LBound(ArySeat) To UBound(ArySeat)
         
     | 
| 
      
 62 
     | 
    
         
            +
                    Range(ArySeat(i)).Value = AryName(i + 1, 1)
         
     | 
| 
      
 63 
     | 
    
         
            +
                Next
         
     | 
| 
      
 64 
     | 
    
         
            +
            End Sub
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
         
     | 
| 
      
 67 
     | 
    
         
            +
            ' 引数      : バリアント配列、動的配列、配列                    '
         
     | 
| 
      
 68 
     | 
    
         
            +
            '               宣言例 Dim MyArray As Variant                   '
         
     | 
| 
      
 69 
     | 
    
         
            +
            ' 目的      : 配列をランダムに並べ替える                 '
         
     | 
| 
      
 70 
     | 
    
         
            +
            ' 戻り値    : なし                                              '
         
     | 
| 
      
 71 
     | 
    
         
            +
            ' 使用例   : AryShuffle(MyArray)                               '
         
     | 
| 
      
 72 
     | 
    
         
            +
            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
         
     | 
| 
      
 73 
     | 
    
         
            +
            Public Sub AryShuffle(ByRef MyAry)
         
     | 
| 
      
 74 
     | 
    
         
            +
            Dim i As Integer, buf, UB As Integer, P As Integer
         
     | 
| 
      
 75 
     | 
    
         
            +
                If IsNull(MyAry) Then Exit Sub
         
     | 
| 
      
 76 
     | 
    
         
            +
                 
         
     | 
| 
      
 77 
     | 
    
         
            +
                Randomize
         
     | 
| 
      
 78 
     | 
    
         
            +
                UB = UBound(MyAry)
         
     | 
| 
      
 79 
     | 
    
         
            +
                For i = UB To 1 Step -1
         
     | 
| 
      
 80 
     | 
    
         
            +
                    P = Int((i + 1) * Rnd)
         
     | 
| 
      
 81 
     | 
    
         
            +
                    buf = MyAry(P)
         
     | 
| 
      
 82 
     | 
    
         
            +
                    MyAry(P) = MyAry(i)
         
     | 
| 
      
 83 
     | 
    
         
            +
                    MyAry(i) = buf
         
     | 
| 
      
 84 
     | 
    
         
            +
                Next
         
     | 
| 
      
 85 
     | 
    
         
            +
            End Sub
         
     | 
| 
      
 86 
     | 
    
         
            +
            ```
         
     |