Mercredi, 29 Décembre 2021
  5 Réponses
  8K visites
0
Votes
annuler
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 dentro das linhas selecionadas, e possible fazer une modificação no código.
Sai 'MsgBox "Too many permutations!", vbInformation, "Kutools for Excel"' Qu'il s'agisse d'un chiffre et non d'une sélection
Entra 'seleção de 1 coluna/linhas.
exemple
lignes sélectionnées 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
il y a des années 2
·
#2419
0
Votes
annuler
Bonjour Angeliton,

J'ai vu votre code, mais je ne vous comprends pas très bien. Pouvez-vous parler anglais?

Amanda
il y a des années 2
·
#2420
0
Votes
annuler
Ce code VBA: répertorie toutes les permutations possibles dans Excel, j'ai besoin d'une modification sous forme d'entrée, qui est dans 'MsgBox' et j'ai besoin qu'il soit dans une sélection de 1 colonne, et le nombre de lignes dans le sélectionné lignes, et possible de faire la modification dans le code.
répondre répondre
Quitte 'MsgBox', "Trop de permutations!", vbInformation, "Kutools for Excel"' Qui est uniquement numérisé et non par sélection
Entrez '1 sélection de colonnes/lignes.
exemple
rangées d'une colonne sélectionnée 12345678 5 des 8 continuant ainsi dans le code.
commence le 12345
se termine par 87654. saisie des données d'observation par sélection dans la colonne
il y a des années 2
·
#2421
0
Votes
annuler
Bonjour Angeliton,

Désolé de ne pas vous avoir entièrement compris... J'espère que vous pourrez réorganiser le mot.

Merci d'avance.
Amanda
il y a des années 2
·
#2422
0
Votes
annuler
Bonjour Amanda Lee, ce code a des données d'entrée à échanger/combinaisons possibles dans MsgBox "Trop de permutations !", vbInformation, "Kutools for Excel"
J'ai besoin que les données d'entrée soient permutées/combinaisons possibles dans la sélection de colonne.
exemple
colonne 1
1 ligne = blanc
2 lignes = noir
3 Ligne = bleu
4 lignes = jaune
5 ligne = vert
Ces lignes s'échangeront dans toutes les combinaisons possibles, le code le fait déjà donc je ne peux pas sélectionner les lignes de permutation, car l'entrée est une MsgBox qui est tapée et non sélectionnée.
le code complet est ici : https://www.extendoffice.com/documents/excel/3657-excel-generate-all-permutations.html
,
il y a des années 2
·
#2423
0
Votes
annuler
Bonjour Angeliton,

Désolé pour la réponse tardive.

Veuillez essayer le code ci-dessous : (Notez que le code ne traite pas une chaîne de plus de 8 caractères. Si vous souhaitez agrandir le nombre, vous pouvez modifier le nombre 8 de "If Len(xStr) >= 8 Then" dans le code à des nombres plus grands. Cependant, plus le nombre est grand, plus le programme sera lent.)

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


J'espère que cela fonctionne pour toi.

Amanda
  • Page:
  • 1
Il n'y a pas encore de réponse faites pour ce poste.