By Ангелітон у середу, 29 грудня 2021 р
Опубліковано в перевершувати
відповіді 5
симпатії 0
думки 7.8K
Голосів 0
Este Código VBA: укажіть усі можливі зміни в Excel, точні зміни у форматі entrada, щоб указати 'MsgBox' і вибравши 1 стовпець, вибравши XNUMX стовпець. possivel fazer a modificação no código.
Sai 'MsgBox "Забагато перестановок!", vbInformation, "Kutools for Excel"' Que é somente digitável e não por seleção
Entra 'seleção de 1 coluna/linhas.
приклад
Вибраний код 12345678 змінено 5 із 8 без коду.
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 років тому
·
0 Любить
·
0 голосів
·
0 Коментарі
·
Цей код VBA: перелік усіх можливих перестановок у Excel, мені потрібна зміна в ньому у вигляді введення, яке знаходиться в 'MsgBox', і мені потрібно, щоб він був у виділеному 1 стовпці та кількість рядка у вибраному рядків, і можна внести зміни в код.
відповісти відповідь
Вихід з «MsgBox», «Забагато перестановок!», vbInformation, «Kutools для Excel»», який лише оцифрований, а не шляхом вибору
Введіть вибір 1 стовпця/рядка.
приклад
рядки вибраного стовпця 12345678 5 з 8 продовжуються так у коді.
Початок 12345
закінчується на 87654. Введення даних спостереження шляхом виділення в стовпці
·
2 років тому
·
0 Любить
·
0 голосів
·
0 Коментарі
·
Привіт Ангелітон,

Так шкода, що я не зміг вас повністю зрозуміти... Сподіваюся, ви зможете змінити це слово.

Спасибо заранее.
Аманда
·
2 років тому
·
0 Любить
·
0 голосів
·
0 Коментарі
·
Привіт, Аманда Лі, цей код має вхідні дані для обміну / можливі комбінації в MsgBox «Забагато перестановок!», vbInformation, «Kutools для Excel»
Мені потрібні вхідні дані для заміни/можливих комбінацій у виборі стовпців.
приклад
колонка 1
1 рядок = білий
2 рядок = чорний
3 рядок = синій
4 рядок = жовтий
5 рядок = зелений
Ці рядки будуть змінюватися місцями в усіх можливих комбінаціях, код уже робить це, тому я не можу вибрати рядки перестановки, тому що вхід є MsgBox, який вводиться, а не вибирається.
повний код тут: https://www.extendoffice.com/documents/excel/3657-excel-generate-all-permutations.html
,
·
2 років тому
·
0 Любить
·
0 голосів
·
0 Коментарі
·
Привіт Ангелітон,

Вибачте за пізню відповідь.

Спробуйте наведений нижче код: (Зверніть увагу, що код не обробляє рядок із понад 8 символами. Якщо ви хочете збільшити число, ви можете змінити число 8 у "Якщо Len(xStr) >= 8 Тоді" у код до більших чисел. Однак, чим більше число, тим повільнішою буде програма.)

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


Сподіваюся, що це працює для вас.

Аманда
·
2 років тому
·
0 Любить
·
0 голосів
·
0 Коментарі
·
Переглянути повне повідомлення