By Angeliton pada hari Rabu, 29 Desember 2021
Posted in Excel
Balasan 5
"Like" 0
views 8K
Suara 0
Este Código VBA: Cantumkan toda sebagai permutaes possíveis no Excel, preciso de uma modificão nele na forma de entrada, que está em 'MsgBox' e eu preciso que seja em uma seleção de 1 coluna, ea quantidade de linha dentro dentro possivel fazer a modificação no código.
Sai 'MsgBox "Terlalu banyak permutasi!", vbInformation, "Kutools for Excel"' Que é somente digitável e não por seleção
Entra 'seleção de 1 coluna/linhas.
contoh
linhas terpilih 12345678 permutar 5 das 8 continuando como esta no codigo.
ayo 12345
'termina em 87654.

'Sub
GetString()

'Updateby Extendoffice

    
Dim
xStr 
As
String

    
Dim
FRow 
As
Long

    
Dim
xScreen 
As
Boolean

    
xScreen = Application.ScreenUpdating

    
Application.ScreenUpdating = 
False

    
xStr = Application.InputBox(
"Enter text to permute:"
"Kutools for Excel"
, , , , , , 2)

    
If
Len(xStr) < 2 
Then
Exit
Sub

    
If
Len(xStr) >= 8 
Then

        
MsgBox 
"Too many permutations!"
, vbInformation, 
"Kutools for Excel"

        
Exit
Sub

    
Else

        
ActiveSheet.Columns(1).Clear

        
FRow = 1

        
Call
GetPermutation(
""
, xStr, FRow)

    
End
If

    
Application.ScreenUpdating = xScreen

End
Sub

Sub
GetPermutation(Str1 
As
String
, Str2 
As
String
ByRef
xRow 
As
Long
)

    
Dim
As
Integer
, xLen 
As
Integer

    
xLen = Len(Str2)

    
If
xLen < 2 
Then

        
Range(
"A"
& xRow) = Str1 & Str2

        
xRow = xRow + 1

    
Else

        
For
i = 1 
To
xLen

            
Call
GetPermutation(Str1 + Mid(Str2, i, 1), Left(Str2, i - 1) + Right(Str2, xLen - i), xRow)

        
Next

    
End
If

'End
Sub
Hai Angeliton,

Saya melihat kode Anda, tetapi saya tidak begitu mengerti Anda. Dapatkah Anda berbicara bahasa Inggris?

Amanda
·
tahun 2 lalu
·
0 Suka
·
0 Voting
·
0 Komentar
·
Kode VBA ini: Daftar semua kemungkinan permutasi di Excel, saya perlu modifikasi di dalamnya dalam bentuk input, yang ada di 'MsgBox' dan saya membutuhkannya dalam pilihan 1 kolom, dan jumlah baris dalam yang dipilih baris, dan memungkinkan untuk membuat modifikasi dalam kode.
balas balasan
Keluar dari 'MsgBox', "Terlalu banyak permutasi!", vbInformation, "Kutools for Excel"' Yang hanya didigitalkan dan bukan dengan pilihan
Masukkan '1 kolom/baris pilihan.
contoh
baris kolom yang dipilih 12345678 5 dari 8 berlanjut seperti ini dalam kode.
mulai 12345
berakhir pada 87654. entri data observasi dengan seleksi pada kolom
·
tahun 2 lalu
·
0 Suka
·
0 Voting
·
0 Komentar
·
Hai Angeliton,

Sangat menyesal bahwa saya tidak dapat sepenuhnya memahami Anda ... Semoga Anda dapat mengatur ulang kata tersebut.

Terima kasih sebelumnya.
Amanda
·
tahun 2 lalu
·
0 Suka
·
0 Voting
·
0 Komentar
·
Hai Amanda Lee, kode ini memiliki data input untuk ditukar / kemungkinan kombinasi di MsgBox "Terlalu banyak permutasi!", vbInformation, "Kutools for Excel"
Saya memerlukan data input untuk ditukar/mungkin kombinasi dalam pemilihan kolom.
contoh
kolom 1
1 garis = putih
2 garis = hitam
3 Garis = biru
4 baris = kuning
5 baris = hijau
Baris-baris ini akan bertukar di semua kombinasi yang mungkin, kode sudah melakukannya jadi saya tidak bisa memilih baris permutasi, karena inputnya adalah MsgBox yang diketik dan tidak dipilih.
kode lengkapnya ada di sini: https://www.extendoffice.com/documents/excel/3657-excel-generate-all-permutations.html
,
·
tahun 2 lalu
·
0 Suka
·
0 Voting
·
0 Komentar
·
Hai Angeliton,

Maaf untuk jawaban terlambat

Silakan coba kode di bawah ini: (Perhatikan bahwa kode tidak memproses string dengan lebih dari 8 karakter. Jika Anda ingin memperbesar angka, Anda dapat mengubah angka 8 dari "Jika Len(xStr) >= 8 Kemudian" di kolom kode ke angka yang lebih besar. Namun, semakin besar angkanya, semakin lambat programnya.)

Sub GetString()
'Updateby Extendoffice
Dim xStr As String
Dim FRow As Long
Dim xScreen As Boolean
Dim Rg, xRg As Range
xScreen = Application.ScreenUpdating
Application.ScreenUpdating = False
Set xRg = Application.InputBox("Enter text to permute:", "Kutools for Excel", , , , , , 8)
xStr = ""
For Each Rg In xRg
xStr = xStr + Rg.Text
Next
If Len(xStr) < 2 Then Exit Sub
If Len(xStr) >= 8 Then
MsgBox "Too many permutations!", vbInformation, "Kutools for Excel"
Exit Sub
Else
ActiveSheet.Columns(1).Clear
FRow = 1
Call GetPermutation("", xStr, FRow)
End If
Application.ScreenUpdating = xScreen
End Sub
Sub GetPermutation(Str1 As String, Str2 As String, ByRef xRow As Long)
Dim i As Integer, xLen As Integer
xLen = Len(Str2)
If xLen < 2 Then
Range("A" & xRow) = Str1 & Str2
xRow = xRow + 1
Else
For i = 1 To xLen
Call GetPermutation(Str1 + Mid(Str2, i, 1), Left(Str2, i - 1) + Right(Str2, xLen - i), xRow)
Next
End If
End Sub


Semoga ini berhasil untuk Anda.

Amanda
·
tahun 2 lalu
·
0 Suka
·
0 Voting
·
0 Komentar
·
Lihat Posting Lengkap