次のEXCELのマクロ プログラムを再帰的式を使って
シンプルにするにはどんな風にすればよういのでしょうか。よろしくお願いします。
Public Sub p()
Dim c, base As Range
Dim str As String
Dim i1, i2, i3
Dim c1, c2, c3
Dim o1, o2, o3
Set base = Range("A1")
c = 0
str = "ABCD"
For i1 = 1 To Len(str)
c1 = Mid(str, i1, 1)
o1 = Replace(str, c1, "")
For i2 = 1 To Len(o1)
c2 = Mid(o1, i2, 1)
o2 = Replace(o1, c2, "")
For i3 = 1 To Len(o2)
c3 = Mid(o2, i3, 1)
o3 = Replace(o2, c3, "")
base.Offset(c).Value = c1 & c2 & c3 & c4 & c5 & o5
c = c + 1
Next
Next
Next
End Sub
No.2ベストアンサー
- 回答日時:
こんな感じですかね
If strLen = 0 Then
を
If strLen = 1 Then
Range("A1").Offset(c).Value = result & selectList
に変えれば、呼び出しを一段減らせます
何回も実行する場合には、
static cをやめて
関数の外部の一番上で
dim c
p2でc=0して下さい。
baseも使いたければ、同様
rp("","ABCDEF")にもできますよん。
'---------------------------------------------
Public Sub p2()
Call rp("", "ABCD")
End Sub
Public Sub rp(ByVal result As String, ByVal selectList As String)
Static c As Integer
Dim i, strLen As Integer, choice As String
strLen = Len(selectList)
If strLen = 0 Then
Range("A1").Offset(c).Value = result
c = c + 1
Else
For i = 1 To strLen
choice = Mid(selectList, i, 1)
Call rp(result & choice, Replace(selectList, choice, ""))
Next
End If
End Sub
この回答への補足
回答に影響はないのですが。
for i3の中の式は
base.Offset(c).Value = c1 & c2 & c3 & o3の誤りでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) エクセルのマクロとシートの保護について教えてください。 1 2022/10/18 08:36
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) セルの値からファイルを複数作りたい2 3 2022/10/07 15:54
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示 6 2023/04/25 17:01
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) 実行時エラー´5854´ 文字列型パラメーターが長すぎます。 3 2023/06/08 21:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
行数が不規則な一週間ごとの合...
-
文字列になっている時間をVBAで...
-
ある列、或いは、ある行のセル...
-
マクロの有効化するダイヤログ...
-
【マクロ】フォルダからエクセ...
-
Excelでの時間帯の入力
-
excel で二つのどちらかを選ぶ
-
エクセルの順位別一覧表の自動...
-
Excel 2019 のピボットテーブル...
-
エクセル 価格表から単価を呼び...
-
excelの不要な行の削除ができな...
-
エクセルで特定の範囲内から小...
-
シートAで横に並んだ項目→シー...
-
Excelが固まってしまった。
-
Excel2013のF6キー操作について
-
【関数】スペースがいくつ入っ...
-
Excelはなんで先頭の0を消すん...
-
【Microsoft Office Excel Comp...
-
西暦や和暦の表示をyyyymmdd表...
-
別シートからの文字を変更
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定した箇所がずれる
-
10base-Tと100base-Tの違い?
-
Yシャツ等の名称や、その他分か...
-
ジャニーズ 当選後に姓の変更
-
ライブの先着受付でどうゆうこ...
-
Adobe Express(アドビエクスプ...
-
スマートフォンの短期解約につ...
-
クレジットカードの分割払い
-
訪問に来る勧誘にどんな風に断...
-
教えてください。 ローソンチケ...
-
ドスパラで75万円のパソコンを...
-
振り込まれる予定のお金の確認方法
-
ドスパラのパソコンに於けるロ...
-
アップルウォッチの予約をした...
-
7万円の給付金の件ですけどコ...
-
JCBカードwで分割払いにしたい...
-
振込みのときって、振り込んだ...
-
大阪医専AO入試について 救急救...
-
実質年率と分割払い手数料の違い
-
あるミュージシャンのライブが...
おすすめ情報