Onsdag 29 December 2021
  5 Svar
  7.9K besøg
0
Stemmer
Fortryd
Este Código VBA: Liste todas as permutações 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, den setro dacios de linha possivel fazer a modificação no código.
Sig 'MsgBox "Too many permutations!", vbInformation, "Kutools for Excel"' Que é somente digitável e não por seleção
Entra 'seleção de 1 coluna/linhas.
eksempel
linhas selecionadas 12345678 permutar 5 das 8 continuando como esta no codigo.
começa 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
2 år siden
·
#2419
0
Stemmer
Fortryd
Hej Angeliton,

Jeg så din kode, men jeg forstår dig ikke helt. Kan du snakke engelsk?

Amanda
2 år siden
·
#2420
0
Stemmer
Fortryd
Denne VBA-kode: Liste alle mulige permutationer i Excel, jeg har brug for en ændring i den i form af input, som er i 'MsgBox', og jeg skal have den i et udvalg af 1 kolonne, og mængden af ​​række inden for den valgte linjer, og muligt at foretage ændringen i koden.
svar svar
Afslutter 'MsgBox', "Too many permutations!", vbInformation, "Kutools for Excel"' Som kun er digitaliseret og ikke ved valg
Indtast '1 kolonne/rækkevalg.
eksempel
rækker i en valgt kolonne 12345678 5 af de 8 fortsætter sådan i koden.
starter 12345
ender på 87654. observationsdataindtastning ved valg i kolonnen
2 år siden
·
#2421
0
Stemmer
Fortryd
Hej Angeliton,

Så ked af at jeg ikke helt kunne forstå dig... Håber du kan omorganisere ordet.

Tak på forhånd.
Amanda
2 år siden
·
#2422
0
Stemmer
Fortryd
Hej Amanda Lee, denne kode har inputdata, der skal udveksles / mulige kombinationer i MsgBox "Too many permutations!", vbInformation, "Kutools for Excel"
Jeg har brug for inputdata, der skal byttes/mulige kombinationer i kolonnevalg.
eksempel
kolonne 1
1 streg = hvid
2 streger = sort
3 Linje = blå
4 streg = gul
5 linje = grøn
Disse linjer vil bytte i alle mulige kombinationer, koden gør det allerede, så jeg kan ikke vælge permutationslinjerne, fordi inputtet er en MsgBox, der er skrevet og ikke valgt.
den fulde kode er her: https://www.extendoffice.com/documents/excel/3657-excel-generate-all-permutations.html
,
2 år siden
·
#2423
0
Stemmer
Fortryd
Hej Angeliton,

Undskyld for det sene svar.

Prøv venligst koden nedenfor: (Bemærk, at koden ikke behandler en streng med over 8 tegn. Hvis du vil gøre tallet større, kan du ændre tallet 8 i "Hvis Len(xStr) >= 8 Så" i kode til større tal. Men jo større tallet er, jo langsommere ville programmet være.)

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


Håber det virker for dig.

Amanda
  • Side:
  • 1
Der er endnu ingen svar på dette indlæg.