Пересчет значений.

Программирование на Visual Basic for Applications
alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Пересчет значений.

Сообщение alex shestov » 01.06.2005 (Ср) 11:57

Есть такая проблема по пересчету заранее неизвестного кол-ва значений. В расчетную таблицу приходит инфа а портфеле и она обновляется несколько раз за день. Данные постоянно обновляются и одно значение нужно постоянно пересчитывать.
Это значение расчитывает так:
Код: Выделить всё
Dim AppExl As Excel.Application
Dim wb As Excel.Workbook
Dim rs, ms As DAO.Recordset
Dim fl As Boolean
Dim i As Long, j As Long
i = 1
fl = True
Set AppExl = GetObject(, "Excel.Application.10") 'Excel.Application.10")
If AppExl Is Nothing Then
    Set AppExl = CreateObject("Excel.Application")
    If AppExl Is Nothing Then
        Err.Raise vbError + 1,
        Exit Sub
    End If
    AppExl.Visible = True
    fl = False
End If
Set wb = AppExl.Workbooks.Add
If wb Is Nothing Then
    Err.Raise vbError + 1,
    Exit Sub
End If
Dim strSql, strEmt As String
strSql = ("SELECT Doxod.Id, Doxod.Emitent, Doxod.Date, Doxod.DateNR, Doxod.Cupon_Value, Doxod.DiskontP, Doxod.PriseNKD FROM Doxod")
Set rs = CurrentDb.OpenRecordset(strSql)
rs.MoveFirst
With wb.Sheets(1)
    While Not rs.EOF
        rs.Fields.Count-1
        For j = 1 To rs.Fields.Count
            .Cells(i, j).Value = rs.Fields(j - 1).Value
        Next j
        .Cells(i, j - 2).FormulaR1C1 = "=RC[-1]/(1+(R1C" & CStr(j) & "/100))^(RC[-2]/365)"
        rs.MoveNext
        i = i + 1
    Wend
    .Cells(i, j - 2).FormulaR1C1 = "=SUM(R[-" & CStr(i - 1) & "]C:R[-1]C)"
    .Cells(i, j - 1).FormulaR1C1 = "=R[-1]C-RC[-1]"
    .Cells(i, j - 1).GoalSeek Goal:=0, ChangingCell:=.Cells(1, j) ' Range("H2")
   
    rs.MoveFirst
    i = 1
    While Not rs.EOF
        rs.Edit
        rs.Fields("DiskontP").Value = .Cells(i, j - 2).Value
        rs.Update
        rs.MoveNext
        i = i + 1
    Wend
End With
wb.Close False
Set wb = Nothing
If Not fl Then
    AppExl.Quit
End If
Set AppExl = Nothing

Полученное значение должно присваиваться определенной ячейке в основной таблице по которой шел пересчет.
Так вот проблема у меня заключается в том, чтобы организовать пересчет по каждой ячейке. Чтоб код перебирал все значения пока не заполнил все ячейки в основной таблице. Может быть решение кроется в правильном задании SELECT из таблицы Doxod. Но это таблица обновляемая и пересчитывается при вызове данного кода.
Я приложу базку с запросами и таблицами. Если кто захочет посмотреть. Это мой первый опыт написания целой быза, так что она я уверен кривая и наверняка есть куча методов по совершенствованию - если будут предложения, я все выслушаю и применю. Особенно по расчет данных что приведены выше.

Очень расчитываю на помощь. Иначе мне крантец. :roll:
Вложения
db1.rar
(32.44 Кб) Скачиваний: 39

Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 59

    TopList