Интеррресная тема, советую посмотреть
Предположим, что у нас имеется некоторый набор символов (a,b,c,d,e), пишем макрос м назначаем к нему кнопку…при нажатии на кнопку должно происходить следующие выполнение в строке А в каждой ячейки: в первой ячейки а, во второй ячейки ав, в третьей – авс, и так далее,,,…все варианты комбинаций.
Далее код макроса должен производит следующее: как известно, на одном листе Excel в каждом из столбцов имеется по 65536 ячеек, так вот если количество комбинаций превысит данный предел, то нужно автоматически переходить на следующий столбец и так далии, пока все столбцы не будут заполнены,…затем проблема встаёт с листами (предположим, что у нас уже имеется 5 листов Excel) так вот как только 1 лист заполнен полностью, должен осуществляться переход на другой лист, и производится продолжение вставления комбинаций в ячейки…
Я так понимаю, что саму “матрицу” символов следует вносить в код, а не указывать форму или отдельный лист, но было бы удобней, если у нас символы находились на отдельном листе, откуда они и будут браться в дальнейшем для вариантов группировок и комбинаций…
Кто, чем может помочь???
если нет возможности ответить тут, то пишите на почту: [email]dyh@email.ru[/email] , только в теме укажите - VBA
Могу помочь, только ты внятно объясни, какие комбинации тебе надо получить.
Возьмем три символа для простоты а,в,с
Напиши сюда ВСЕ комбинации, которые ты хотел бы получать от этой программы.
речь идёт о том, что бы в код ввнести минимальный и максимальный размер (число) для дольнейших коамбинаций - к примеру от одного символа (а) и до 16 символов с повторами естественно (аааbbbbccabcbacb)...можно такое сделать,...???...
В экселе даже тетрис можно сделать. А подобную задачу - тем более. Постараюсь в течение дня написать и запостить сюда.
В экселе даже тетрис можно сделать. А подобную задачу - тем более. Постараюсь в течение дня написать и запостить сюда.
Кстати, интересно посмотреть на этот тетрис, а то я только слышал о нем, но ни разу не видел.:roll:
Кстати, интересно посмотреть на этот тетрис, а то я только слышал о нем, но ни разу не видел.:roll:
Да нет проблем: вот тебе тетрис:
Да нет проблем: вот тебе тетрис:
А вот змейка. Она мне больше нравится - классно сделана.
А вот змейка. Она мне больше нравится - классно сделана.
Да, змейка, прикол, особенно кнопка БОСС :D
Не забудь только перед зачетом разобраться, как она устроена, а то засыпят нафиг, мне обидно будет, что зря старался. ;)
а так спасибо,...сеёчас посмотрю...:angel:
--- очиень хорошо,..просто замечательно,...пасибо...
можиет те что-ниеБуть нужно...пиши, можно на мыло...
....
****
второй вопрос - каким образом изменить первый символ в ячейке - к примеру,
[COLOR=blue]A[/COLOR]qqq заменить на [COLOR=red]a[/COLOR] qqq и естественно применить это весь столбецъ,...мона такое сделать...
послушай, а каким образом можно сделать так, что бы после перебора (и формирования)каждого столбцА, его результат прописывался бы (или вставлялся бы) к примеру в txt файл - и так каждый (но всё в один файл),...
Cutty Sark...
послушай, а каким образом можно сделать так, что бы после перебора (и формирования)каждого столбцА, его результат прописывался бы (или вставлялся бы) к примеру в txt файл - и так каждый (но всё в один файл),...
По поводу текстового файла - вот добавь три строчки в программку:
Dim i As Integer
Set ws = ThisWorkbook.Worksheets("Start")
AllSymbols = ws.Range("B2").Value
DigMax = Len(AllSymbols)
MinLength = ws.Range("B3").Value
MaxLength = ws.Range("B4").Value
If MinLength > MaxLength Then Exit Sub
Application.ScreenUpdating = False
[COLOR=red]Open ThisWorkbook.Path & "\result.txt" For Output As #1[/COLOR]
iRow = MaxRow 'Это для того, чтобы сразу воспользоваться функцией NextCell
iCol = MaxCol
Set w = ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
ReDim Letters(0 To MaxLength) 'Для чего "+1" станет ясно ниже
For i = 0 To MaxLength - MinLength 'Начинаем с числа вида 00011111
Letters(i) = 0
Next i
For i = MaxLength - MinLength + 1 To MaxLength
Letters(i) = 1
Next i
While Letters(0) = 0 '0-й разряд специально сделан лишним, чтобы следить за "переполнением"
Call NextCell 'Переходим к следующей ячейке
w.Cells(iRow, iCol).Value = CurrentString() 'Записывем очередное слово
Application.StatusBar = w.Name & ":" & iCol & ":" & iRow & "=" & w.Cells(iRow, iCol).Value
[COLOR=red]Print #1, w.Cells(iRow, iCol).Value[/COLOR]
Call NextArray
Wend
[COLOR=red]Close #1[/COLOR]
Application.StatusBar = False
Application.ScreenUpdating = True
End Sub
По поводу замены - нажми Ctrl+H ("аш", а не "эн"). Там разберешься...
на счёт того, как замену произвести - я немного код доработал, путём обыкновенной запииссси макроса:
Private Sub CommandButton1_Click()
Dim Rng As Range
For Each Rng In ActiveWindow.Selection
Rng.Value = Replace(Rng.Text, Left(Rng.Text, 1), LCase(Left(Rng.Text, 1)), 1, 1)
Next
End Sub
и в принципе усё,...прописываем в ячеёке символы, и если есть большая буква (к примеру) - первая,,,то мы её заменяем на маленькую...
---вот о чём я спрашивал,,,...но встроенная функция тоже пригодна...
***
теперь к нашиб "вопросам": при работе, если выйти из сианса произоАйдей остановка всего процеса преоАбразования и если в дальнейшем запустить - то усё СНОАчало начнётся,,,каким образом кнопку паузы приделать - у меня получается только что то с подключёнными библиотеками проблемы - так как я не знаю, коакая библиотека за какой клас отвечает - как доаработать тот код, коаторый ты мне прислал...?...
пасибо...
на счёт того, как замену произвести - я немного код доработал, путём обыкновенной запииссси макроса:
Private Sub CommandButton1_Click()
Dim Rng As Range
For Each Rng In ActiveWindow.Selection
Rng.Value = Replace(Rng.Text, Left(Rng.Text, 1), LCase(Left(Rng.Text, 1)), 1, 1)
Next
End Sub
и в принципе усё,...прописываем в ячеёке символы, и если есть большая буква (к примеру) - первая,,,то мы её заменяем на маленькую...
---вот о чём я спрашивал,,,...но встроенная функция тоже пригодна...
***
теперь к нашиб "вопросам": при работе, если выйти из сианса произоАйдей остановка всего процеса преоАбразования и если в дальнейшем запустить - то усё СНОАчало начнётся,,,каким образом кнопку паузы приделать - у меня получается только что то с подключёнными библиотеками проблемы - так как я не знаю, коакая библиотека за какой клас отвечает - как доаработать тот код, коаторый ты мне прислал...?...
Пауза? Эка ты хватил... Ладно, попробую тебе сделать паузу...
Пауза? Эка ты хватил... Ладно, попробую тебе сделать паузу...
Кстати, если тебе нужно с маленькой буквы - так это можно сразу так делать.
Вставь вот эту строчку в функцию CurrentString перед самым EndFunction:
Mid(CurrentString, 1, 1) = LCase(Mid(CurrentString, 1, 1))
---
слушай, а ты случайно не занимаешься JAvoi,...в частн6ости меня интерресссует шаблоны для инет-магазина (примерно такая-же тежнология, как и на народе, когда мона там сайт сделать)...
я просто PHP и перловку только начал учить, а на Jave что-то не получается...
---
у тя электронный адрес - какой,...у мня [email]dyh@email.ru[/email]...
пришли поТДДверждение,,,есть о чём поговорить,...
просто некотороая направленность не для форума...
Cutty Sark
---
у тя электронный адрес - какой,...у мня [email]dyh@email.ru[/email]...
пришли поТДДверждение,,,есть о чём поговорить,...
просто некотороая направленность не для форума...
Вот, на тебе с паузами. Еще в пятницу сделал, но забыл положить...
Сам понимаешь, никаких защит от дурака я не делал. Если ты во время паузы изменишь параметры, а потом запустишь продолжение, результат будет непредсказуем. А так всё работает вроде...
в частности меня интерресссует шаблоны для инет-магазина (примерно такая-же тежнология, как и на народе, когда мона там сайт сделать)...
я просто PHP и перловку только начал учить, а на Jave что-то не получается...
Дык тут вообще проблем нет - в нете если покопаится можно кучу интернет-магазинов найти в скриптах... правда, конечно, их переделывать надо будет... %/
---пасибо, пОапробую...как жизнь то?...