By Ангелитон в среду, 29 декабря 2021 г.
Опубликовано в Excel
Ответы 5
Лайк 0
Просмотры 8K
Голосов 0
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 possivel fazer a modificação no código.
Sai 'MsgBox "Слишком много перестановок!", vbInformation, "Kutools for Excel"' Что-то похожее на цифру и нет для выбора
Entra 'seleção де 1 coluna/linhas.
пример
Выбранный номер 12345678 меняется с 5 на 8, продолжая как этот код.
комэса 12345
'терминал эм 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 for Excel» ', который только оцифровывается, а не путем выбора
Введите '1 выбор столбца/строки.
пример
строки выбранного столбца 12345678 5 из 8 продолжаются так в коде.
начинается 12345
заканчивается на 87654. ввод данных наблюдения путем выбора в столбце
·
2 лет назад
·
0 Любит
·
0 Голосов
·
0 комментариев
·
Привет Ангелитон,

Так жаль, что я не мог полностью понять вас... Надеюсь, вы сможете реорганизовать слово.

Заранее спасибо.
Аманда
·
2 лет назад
·
0 Любит
·
0 Голосов
·
0 комментариев
·
Привет, Аманда Ли, этот код имеет входные данные для обмена/возможные комбинации в MsgBox «Слишком много перестановок!», vbInformation, «Kutools for 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 «If Len (xStr) >= 8 Then» в код на большие числа. Однако, чем больше число, тем медленнее будет работать программа.)

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 комментариев
·
Посмотреть сообщение полностью