Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
не запускается макрос, при запуске кода открывается окно выбора уже сохраненных макросов
 
так, как я и ожидал, причина основной проблемы была наиглупейшей из возможных - я пробовал макрос на системе ЛУ, матрица которой вырождена)) другое дело, что значения находятся неверные, но это уже совсем другая история видимо, извиняюсь за весь сыр-бор
если кто-то решит ткнуть меня носом в место, где код выполняет неверный алгоритм решения - буду очень благодарен, но и на этом результате всем спасибо!

P.S. подправил код, теперь все верно)) можно закрывать тему, думаю
Изменено: oragdezvuk - 15.04.2024 03:55:17
не запускается макрос, при запуске кода открывается окно выбора уже сохраненных макросов
 
Sanja, AA и FF - временные массивы, не хотел терять исходные данные
не запускается макрос, при запуске кода открывается окно выбора уже сохраненных макросов
 
ocet p, значит все-таки проблема в процедуре SolveLinearEquation с передачей аргументов, ибо в упор не вижу где может быть ошибка с заполнением массивов. понятно, спасибо
не запускается макрос, при запуске кода открывается окно выбора уже сохраненных макросов
 
MikeVol,  
не запускается макрос, при запуске кода открывается окно выбора уже сохраненных макросов
 
ocet p, то же самое( ругается на строчку
Код
G(n) = FF(n) / AA(n, n)
в "гауссовской" процедуре
не запускается макрос, при запуске кода открывается окно выбора уже сохраненных макросов
 
ocet p, исправил, теперь такая ошибка...
но спасибо за замечание! хоть что-то сдвинулось
не запускается макрос, при запуске кода открывается окно выбора уже сохраненных макросов
 
Дмитрий(The_Prist) Щербаков, office ltsc 2021, windows 11
не запускается макрос, при запуске кода открывается окно выбора уже сохраненных макросов
 
nilske, ИИ очень слаб в VBA) правда я еще слабее, но все же. можно даже сказать, что это на 50% мой код ахах. какие-то пространные пояснения выдает, но не может понять о какой ошибке кода я ему там затираю
не запускается макрос, при запуске кода открывается окно выбора уже сохраненных макросов
 
Sanja, запускаю через окно  модуля VBA кнопкой run, так как этот макрос не сохраняется в списке макросов (тот что на картинке). пытался добавить в тот же макрос еще один код, который и должен передавать ему 4 аргумента, но либо тот же результат, либо вылазила ошибка, что макрос gaus не определен. если создавать отдельный модуль - результат тот же. при этом другие макросы работают хорошо.
про то, что нужно передать 4 аргумента знал, но уже думаю, что наверное плохо понимаю как это работает, раз не выходит)
unitgod, к сожалению, не могу прикрепить конкретно мой файл, там куча листов и уже проделанной работы. но могу создать новый и сохранить там этот макрос) правда есть ли в этом смысл не знаю
вот код, которым пытался передать аргументы, но что-то тщетно с ним:
Код
Sub SolveLinearEquation()
    Dim n As Integer
    Dim A() As Double, F() As Double, X() As Double
    Dim i As Integer, j As Integer
    ' Определить количество уравнений (число строк в матрице A)
    n = Range("A1").CurrentRegion.Rows.Count
    ' Инициализировать массивы A() и F()
    ReDim A(1 To n, 1 To n)
    ReDim F(1 To n)
    ReDim X(1 To n)
    ' Заполнить массив A() данными из указанных ячеек
    For i = 1 To n
        For j = 1 To n
            A(i, j) = Cells(i, j).Value
        Next j
    Next i
    ' Заполнить массив F() данными из столбца свободных членов
    For i = 1 To n
        F(i) = Cells(i, n + 1).Value
    Next i
    ' Вызвать процедуру для решения системы уравнений
    Call sub_gaus(n, A, F, X)
    ' Вывести результат на лист Excel
    For i = 1 To n
        Cells(i, n + 2).Value = X(i)
    Next i
End Sub
не запускается макрос, при запуске кода открывается окно выбора уже сохраненных макросов
 
вот, собственно, код:
Код
Sub gaus(ByVal n, ByRef A() As Double, _
 ByRef F() As Double, ByRef X() As Double)
 Dim i As Integer, j As Integer, k As Integer
 Dim AA() As Double: ReDim AA(1 To n, 1 To n)
 Dim FF() As Double: ReDim FF(1 To n)
 Dim B() As Double: ReDim B(1 To n, 1 To n)
 Dim G() As Double: ReDim G(1 To n)
'Прямой ход:
 For i = 1 To n
 For j = 1 To n
 AA(i, j) = A(i, j)
 Next j
 FF(i) = F(i)
 Next i
 For k = 1 To n - 1
 For j = k + 1 To n
 B(k, j) = AA(k, j) / AA(k, k)
 Next j
 G(k) = FF(k) / AA(k, k)
 'конец шага № k и начало шага № k + 1
 For i = k + 1 To n
 For j = k + 1 To n
 AA(i, j) = AA(i, j) - AA(i, k) * _
 B(k, j)
 Next j
 FF(i) = FF(i) - AA(i, k) * G(k)
 Next i
 Next k
 G(n) = FF(n) / AA(n, n)
'Обратный ход:
 X(n) = G(n)
 For k = n - 1 To 1 Step -1
 X(k) = G(k)
 For j = k + 1 To n
 X(k) = X(k) - B(k, j) * X(j)
 Next j
 Next k
End Sub
при запуске, вместо выполнения решения СЛУ методом Гаусса, открывается окно выбора макроса...
Страницы: 1
Наверх