Страницы: 1
RSS
Вставка номера текущей строки в формулу (VBA)
 
Прошу помочь найти способ решения, есть код в VBA который по запросу добавляет новую строку с необходимыми значениями из формы
Код
Sub Submit()

    Dim sh As Worksheet
    Dim iRow As Long
    
    Set sh = ThisWorkbook.Sheets("Database")
    
    
    If frmForm.txtRowNumber.Value = "" Then
    
        iRow = [Counta(Database!A:A)] + 1
    Else
    
        iRow = frmForm.txtRowNumber.Value
        
    End If
    
    
    With sh
    
        .Cells(iRow, 1) = "=Row()-1"
        
        .Cells(iRow, 2) = frmForm.naryad.Value
                
        .Cells(iRow, 3) = frmForm.rew.Value
        
        .Cells(iRow, 4) = frmForm.adres.Value
                
        .Cells(iRow, 5) = frmForm.tech.Value
        
        .Cells(iRow, 6) = frmForm.dinstal.Value
        
        .Cells(iRow, 7) = frmForm.dtp.Value
        
        .Cells(iRow, 8) = "=ЕСЛИ(Q2="";(РАЗНДАТ(F2;СЕГОДНЯ();"d"));(РАЗНДАТ(F2;Q2;"d")))"


    
    End With


End Sub

Но нужно в один из столбцов добавить формулу, в которой должна присутствовать ссылка на ячейку в текущей строке

Код
=ЕСЛИ(Q2="";(РАЗНДАТ(F2;СЕГОДНЯ();"d"));(РАЗНДАТ(F2;Q2;"d")))

При условии, что номера ячеек (Q2,F2) менялись в зависимости от номера строки при добавлении новой, т.е. если будет строка №3 были уже Q3,F3.
 
Ответить помощнику в первой своей теме не считаете нужным?
 
Цитата
vikttur написал:
Ответить помощнику в первой своей теме не считаете нужным?
Исправился  :)  
 
Цитата
MrOldFox написал:
присутствовать ссылка на ячейку в текущей строке
в таких случаях куда правильнее использовать стиль ссылок R1C1 и "родную" для VBA локализацию(EN):
Код
=IF(RC17="",(DATEDIF(RC6,TODAY(),"d")),(DATEDIF(RC6,RC17,"d")))
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, почему то при попытке вставить формулу через .Cells(iRow, 4) =, с RC пишет ошибку:
Run-time error '1004':
Application-defined or object-defind error

К примеру формула похожая .Cells(iRow, 9) = "=WORKDAY(RC7;2;0)"
 
Цитата
MrOldFox написал:
через .Cells(iRow, 4)
а надо через
Код
.Cells(iRow, 4).FormulaR1C1 = 
.Cells(iRow, 4) - здесь по умолчанию используется свойство Value, которое не будет корректно обрабатывать вставку формул.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, вроде разобрался, спасибо за помощь.
Страницы: 1
Наверх