При очистке и оптимизации большого количества кода VBA я думал о том, чего у меня никогда раньше не было.Как вы можете видеть в следующем блоке кода, я всегда использую абсолютные ссылки на ячейки для «статических» ячеек, которые всегда должны ссылаться на один и тот же адрес при написании формулы в VBA.Я знаю важность использования абсолютных ссылок в формулах, но есть ли необходимость всегда ссылаться на такие ячейки таким образом?Например, должна ли первая ссылка (ячейки G12) ".Range (" G12 "). Formula =" = SUM (J16: J "& LastCORow) * $ G $ 12" быть равной "$ G $ 12, если этозначение ячейки, используемое в формуле. Я спрашиваю, нужна ли это или хороша практика кодирования.
' refresh the formulas
' G8 Materials =SUM(F16:F34)
' G9 Labor =SUM(H16:H34)
' G10 Hours =SUM(I16:I34)
' G11 SubContracts -->depends on G2 (Markup)
' G12 Profit Margin -->depends on G3 (Profit/Overhead)
' set the subcontracts formula and label
If Len(.Range("E11").value) Then ' if the Invoice was set to markup the Sucontracts
.Range("G11").Formula = "=SUM(G16:G" & LastCORow & ")*(1+$G$2)"
.Range("E11").value = "Subcontracts (" & (.Range("G2") * 100) & "% Markup):"
Else
.Range("G11").Formula = "=SUM(G16:G" & LastCORow & ")"
.Range("E11").value = "Subcontracts:"
End If
' G8 Materials
.Range("G8").Formula = "=SUM(F16:F" & LastCORow & ")"
' G9 Labor
.Range("G9").Formula = "=SUM(H16:H" & LastCORow & ")"
' G10 Hours
.Range("G10").Formula = "=SUM(I16:I" & LastCORow & ")"
' G12 Profit Margin -->depends on G3 (Profit/Overhead)
.Range("G12").Formula = "=SUM(J16:J" & LastCORow & ",K4,J8:J10,($G$2*SUM(G16:G" & LastCORow & ")))* $G$3"
' Lastly the job total
.Range("C" & LastCORow + 4).Formula = "=ROUND(SUM(J16:J" & LastCORow & ",K4,J8:J10, ($G$2*SUM(G16:G" & LastCORow & ")))*(1+$G$3),0)"
В предыдущем коде все значения в столбце G используются в качестве переменных вычисления в формулах,их адрес никогда не меняется. Таким образом, вопрос в том, нужны ли им все абсолютные ссылки ..?