I’m trying to use the solver from Excel in VBA but I’m having trouble. I keep getting the following error: «Solver: An unexpected internal error occurred, or available memory was exhausted.»
Now, I guess solver isn’t out of memory as I can solve the same problem when using the solver dialog.
Here’s my code:
Sub CoolSolverButton()
SolverReset
SolverOK setCell:=Range("$CK$203"), MaxMinVal:=1, ByChange:=Range("$BH$203:$BQ$222"), Engine:=2, EngineDesc:="Simplex LP"
SolverAdd CellRef:=Range("$BH$203:$BQ$222"), relation:=5, FormulaText:="binary"
SolverAdd CellRef:=Range("$BH$223:$BQ$223"), relation:=1, FormulaText:=Range("$BH$225:$BQ$225")
SolverAdd CellRef:=Range("$BH$227:$BH$245"), relation:=1, FormulaText:=Range("$BI$227:$BI$245")
SolverAdd CellRef:=Range("$BJ$227:$BJ$245"), relation:=1, FormulaText:=Range("$BK$227:$BK$245")
SolverAdd CellRef:=Range("$BL$227:$BL$245"), relation:=1, FormulaText:=Range("$BM$227:$BM$245")
SolverAdd CellRef:=Range("$BN$227:$BN$245"), relation:=1, FormulaText:=Range("$BO$227:$BO$245")
SolverAdd CellRef:=Range("$BP$227:$BP$245"), relation:=1, FormulaText:=Range("$BQ$227:$BQ$245")
SolverAdd CellRef:=Range("$BR$203:$BR$222"), relation:=2, FormulaText:=Range("$BT$203:$BT$222")
SolverAdd CellRef:=Range("$BU$203:$BU$222"), relation:=2, FormulaText:=Range("$BW$203:$BW$222")
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
End Sub
Any ideas?
Thanks!
-
Новое за 24 часа
-
Пользователи
-
Arise
Senior Member701
#
16 февраля 2010 15:32KSIva, не будем обсуждать у кого какие знания в Экселе и гнуть пальцы.
за ответ спасибо

-
dikar
Клуб счастливых людей2587
#
17 февраля 2010 09:14друзья. непредвиденный трабл.
надстройка — Поиск решения.
офис 2007, но трабл не в этом.
решение эксель мне находит, но результаты выдавать отказывается. точнее говоря матрицу решал многократно и решения выводились исправно а вот в тот момент когда я принял решение об окончательном виде матрицы и попытался вывести окончательные результаты после выполнения Поиска Решения выползает такая вот надпись:
Поиск решения: непредвиденная внутренняя ошибка или достигнут предел доступной памяти.
ЧТО ЭТО? и с чем его едят.
мне победить эту запись не удалось.
помогите плиз, кто чем может. очень нужно.
Пишите в ЛС.
-
MaxRusak
Senior Member54310
#
17 февраля 2010 11:55dikar:
друзья. непредвиденный трабл.
надстройка — Поиск решения.
офис 2007, но трабл не в этом.
решение эксель мне находит, но результаты выдавать отказывается. точнее говоря матрицу решал многократно и решения выводились исправно а вот в тот момент когда я принял решение об окончательном виде матрицы и попытался вывести окончательные результаты после выполнения Поиска Решения выползает такая вот надпись:
Поиск решения: непредвиденная внутренняя ошибка или достигнут предел доступной памяти.
ЧТО ЭТО? и с чем его едят.
мне победить эту запись не удалось.
помогите плиз, кто чем может. очень нужно.
Эксель чувствителен к исходным данным в изменяемых ячейках.
Легче зажечь одну маленькую свечку, чем клясть темноту. (с) Конфуций.
-
Олег
Senior Member681
#
4 марта 2010 12:34Помогите правильно в макросе указать переименование страницы
мне надо чтобы переименовывало по данным из ячейки А8 (они там меняются)
в бейсике указывает имя из информации в ячейке, которое там было на момент написания макроса, а хочу чтобы чтобы имя было то, которое указано в упоминаемой ячейке на момент выполнения макроса
Sheets(«2»).Select
Sheets(«2»).Name = «Беларусь.43»
-
DimetriX
Member314
#
4 марта 2010 19:50Олег,
попробуй такой код.
предполагается, что он выполняется на той закладке, где и расположена ячейка А8.
то что надо?
Sub zakladka()
y = ActiveSheet.Name
x = «» & y & «»
Sheets(x).Select
Sheets(x).Name = Cells(8, 1).Value
End Sub
-
Олег
Senior Member681
#
5 марта 2010 09:52DimetriX, спасибо, вроде работает
-
KSIva
Senior Member11119
#
5 марта 2010 10:04Олег, DimetriX, а зачем эта строчка: Sheets(x).Select ? Без нее будет работать?
«И покарал его Господь и отдал его в руки женщины». Кн. Юдифи, 16, гл. 7.
-
Олег
Senior Member681
#
5 марта 2010 11:14KSIva, вроде и без неё работает
-
Артёмка
Senior Member22047
#
9 марта 2010 14:57подскажите плиз, как преобразовать формат времени 5:34:00 в целое значение минут? т.е. 334 мин.
спасибо.
Поделись улыбкою своей — и тебе её не раз ещё припомнят…
-
KSIva
Senior Member11119
#
9 марта 2010 15:07Артёмка:
подскажите плиз, как преобразовать формат времени 5:34:00 в целое значение минут? т.е. 334 мин.
спасибо.
«Формат- ячейки- все форматы» указать формат [м] (буква «м» русская)
«И покарал его Господь и отдал его в руки женщины». Кн. Юдифи, 16, гл. 7.
-
Артёмка
Senior Member22047
#
9 марта 2010 17:28KSIva, в офисе гут, получилось. в гугл докс такой фокус не прокатывает. есть варианты?
Поделись улыбкою своей — и тебе её не раз ещё припомнят…
-
KSIva
Senior Member11119
#
10 марта 2010 09:44Артёмка:
KSIva, в офисе гут, получилось. в гугл докс такой фокус не прокатывает. есть варианты?
C гуглдокс не работаю, но попробуй значение ячейки умножить на 1440. Типа =A1*1440 , где а1 — ячейка со временем. Формат поставь числовой. Если есть секунды, округляй до целых.
«И покарал его Господь и отдал его в руки женщины». Кн. Юдифи, 16, гл. 7.
-
Олег
Senior Member681
#
22 марта 2010 14:27А можно написать макрос, который удаляет все листы кроме активного?
-
IveGotThePower
USA Team3464
#
22 марта 2010 15:02Олег, можно:
Sub DelSheet()
For Each sh In Windows(1).SelectedSheets
Name = sh.Name
Exit For
Next
Application.DisplayAlerts = False
For Each sh In ActiveWorkbook.Sheets
If sh.Name <> Name Then
sh.Delete
End If
Next
Application.DisplayAlerts = True
End Sub
We can take that place. And than do what? Heads on pikes.
-
Олег
Senior Member681
#
22 марта 2010 16:27I’ve got the power, да, работает,
большое спасибо
-
Олег
Senior Member681
#
23 апреля 2010 11:47Вот выше описывали мне как переименовать лист в соответствии со значением в определённой ячейке
А можно ли также переименовать книгу? Нужно чтобы книга сохранялась на рабочий стол и обзывалась значением в ячейке А8 + дата и время
помогите пожалуйста
-
DimetriX
Member314
#
24 апреля 2010 21:31Олег, попробуйте. Но вместо «F:» надо прописать точный путь к рабочему столу, он у вас может быть другой, чем у меня, поэтому и не вписывал.
Sub new1()
d = Format(Date, «YYYYMMDD») & «_» & Format(Time, «HHMMSS») & «.xls»
ActiveWorkbook.SaveAs Filename:=»F:» & Cells(8, 1).Value & «_» & d
End Sub
-
Олег
Senior Member681
#
26 апреля 2010 10:04DimetriX, спасибо, работает
-
Vita
Senior Member2666
#
6 мая 2010 14:13как можно сделать так чтобы один и тот же колонтитул был на всех листах файла?
а то листов много везде настраивать долго

Лучше один раз вовремя — чем два раза правильно!
-
KSIva
Senior Member11119
#
6 мая 2010 15:20Vita:
как можно сделать так чтобы один и тот же колонтитул был на всех листах файла?
а то листов много везде настраивать долго
Выделяешь первый лист, Ctrl+щелчок по ярлыку последнего. Выделяются все листы (вверху в заголовке окна появляется слово [Группа]). Устанавливаешь колонтитулы — они утанавливаются для всех выделенных листов.
«И покарал его Господь и отдал его в руки женщины». Кн. Юдифи, 16, гл. 7.
Помогите пожалуйста решить проблему добавления ограничений в Solver посредством кода на VBA. Суть проблемы в том, что при вводе ограничений посредством редактора VBA и последующем запуске Solver, выскакивает сообщение «Поиск решения: непредвиденная внутренняя ошибка или достигнут предел допустимой памяти». При анализе проблемы выяснилось, что такая ошибка появляется только в том случае, когда я ввожу дробные ограничения. Если целые числа, то все ОК. Привожу пример кода для пояснения:
Sub AddLimitSolver()
For i = 3 To 32
Application.Run "Solver.xla!SolverAdd", Cells(i, 1), 1, Cells(i, 3)
Application.Run "Solver.xla!SolverAdd", Cells(i, 1), 3, Cells(i, 2)
Next i
End Sub
Привет.
Возникла проблема — есть файл МС Экселя, в котором задаются некоторые данные и вызывается надстройка «Поиск решения».
Для универа надо это оформить через Дельфи — я решил прикрутить дельфийский интерфейс к Экселю.
Сделал заполнение исходных данных — все работает нормально, теперь надо вызвать надстройку.
Искал везде — не нашел как ее вызвать напрямую, тогда сделал макрос с вызовом настройки и стал дергать его из дельфи. Вот тут-то и появилась проблема: если я зову макрос просто из Экселя, то все отрабатывает нормально. Если же я зову его из свой программы, то получаю сообщение «Поиск решения: непредвиденная внутренняя ошибка или достигнут предел доступной памяти».
Вопрос: кто-нибудь знает чего ей надо и как это ей дать?
Здравствуйте, Serg32M, Вы писали:
SM>Возникла проблема — есть файл МС Экселя, в котором задаются некоторые данные и вызывается надстройка «Поиск решения».
SM>Для универа надо это оформить через Дельфи — я решил прикрутить дельфийский интерфейс к Экселю.
SM>Сделал заполнение исходных данных — все работает нормально, теперь надо вызвать надстройку.
SM>Искал везде — не нашел как ее вызвать напрямую, тогда сделал макрос с вызовом настройки и стал дергать его из дельфи. Вот тут-то и появилась проблема: если я зову макрос просто из Экселя, то все отрабатывает нормально. Если же я зову его из свой программы, то получаю сообщение «Поиск решения: непредвиденная внутренняя ошибка или достигнут предел доступной памяти».
SM>Вопрос: кто-нибудь знает чего ей надо и как это ей дать?
Ты бы хоть пример кода кинул…. где ото вылазит…
… << RSDN@Home 1.1.4 beta 3 rev. 185>>
Здравствуйте, Vodyamba, Вы писали:
V>Здравствуйте, Serg32M, Вы писали:
SM>>Возникла проблема — есть файл МС Экселя, в котором задаются некоторые данные и вызывается надстройка «Поиск решения».
SM>>Для универа надо это оформить через Дельфи — я решил прикрутить дельфийский интерфейс к Экселю.
SM>>Сделал заполнение исходных данных — все работает нормально, теперь надо вызвать надстройку.
SM>>Искал везде — не нашел как ее вызвать напрямую, тогда сделал макрос с вызовом настройки и стал дергать его из дельфи. Вот тут-то и появилась проблема: если я зову макрос просто из Экселя, то все отрабатывает нормально. Если же я зову его из свой программы, то получаю сообщение «Поиск решения: непредвиденная внутренняя ошибка или достигнут предел доступной памяти».
SM>>Вопрос: кто-нибудь знает чего ей надо и как это ей дать?
V>Ты бы хоть пример кода кинул…. где ото вылазит…
Макрос в Ёкселе
…
SolverOk SetCell:=»$D$21″, MaxMinVal:=1, ValueOf:=»0″, ByChange:=»$D$9:$F$9″
SolverSolve UserFinish:=True
…
Вызов из Дельфи
xl: TExcelApplication;
…
frmMain.xl.Run(‘MacroForDelphi’); // вот тут оно и говорит такую фигню
…
Программное обеспечение
Проблема с Поиском решения в MS ExcelПри решении задачи на оптимизацию вылезает ошибка «Поиск решения: непредвиденная внутренняя ошибк или достигнут предел доступной памяти». С памятью все нормально вроде, больше никакая прога не жалуется. Excel решение находит но при попытке создать отчеты по результатам и по устойчивости выдает эту ошибку.
Может кто сталкивался? Как исправить? (
Попроси больше объяснений
Следить
Отметить нарушение
Автор: Гость
