| 
    
     |  | ヒロさん、ichinoseさん、りんさん、こんにちはぁ 
 >>abcdef のすべての組み合わせをエクセルのシートに出力
 >>するようなプログラムがわかる方教えてください。
 ↑という内容だったので・・・・
 
 [#400]が参考になるかな?と思ったのですが、
 入れ替え処理を使っているので、順番がばらばらですね。
 なので、抜き出し処理に変えてみました。
 
 結果は多分ichinoseさんと変わらないと思いますが、せっかく作ったので載せさせてください^^;
 
 この手の処理には、再帰呼出(リカーシブコール)という方法を使います。
 ichinoseさんのサンプルも私のサンプルも再帰しています。
 とても役に立つテクニックなので、是非物にしてくださいね。
 
 ---- 8< ---- 8= ---- 8< ---- 8= ---- 8< ---- 8= ---- 8< ---- 8= ---- 8< ----
 Sub Macro1()
 
 Permute Range("A1"), "ABC"
 End Sub
 
 Sub Permute(ByRef rngData As Range, ByVal strData As String, Optional ByVal lngNum As Long = 1)
 Dim i As Long
 
 If lngNum < Len(strData) Then
 For i = lngNum To Len(strData)
 ' 再帰呼出
 Permute rngData, Left$(strData, lngNum - 1) & Mid$(strData, i, 1) & Mid$(strData, lngNum, i - lngNum) & Mid$(strData, i + 1), lngNum + 1
 Next
 Else
 ' 結果
 rngData.Value = strData
 Set rngData = rngData.Offset(1)
 End If
 End Sub
 
 
 |  |