Я пытаюсь определить формулу в своем кодировании VBA, чтобы учесть определенное значение из определенного рабочего листа внутри моей книги. Не могли бы взглянуть на мой код и рассказать мне, что я делаю неправильно?Определение значения одной ячейки для использования в автоматическом вычислении
' Macro used to create the labour demand
'
' define variables and tables
Dim wb As Workbook
Set wb = Application.ActiveWorkbook
Dim LabourDemand As Worksheet
Set LabourDemand = Sheets("Labour Demand")
Dim LaborPerFTE As Double
Set LaborPerFTE = Application.ActiveWorkbook.Worksheets("FTE Calculation").Range("C34").Value
' define connection string
Dim connectionString As String
connectionString = "ODBC;DSN=Excel Files;DBQ=" & Application.ActiveWorkbook.FullName & ";DefaultDir=" & Application.ActiveWorkbook.Path & ";Dri"
' clear out the old table
LabourDemand.Cells.Clear
И тогда это значение должно быть использовано для расчетов следующим
'create new table
With LabourDemand.ListObjects.Add(SourceType:=0, Source:=Array(Array(_
connectionString), Array("verId=1046;MaxBufferSize=2048;PageTimeout=5;")), _
Destination:=LabourDemand.Range("$A$1")).QueryTable
.CommandType = 2
.CommandText = "SELECT `'Merged demand$'`.Category, `'Merged demand$'`.`Test Name`, `'Labor and equipment times$'`.`Equipment used`, `'Merged demand$'`.SampleDemandN, `'Merged demand$'`.SampleDemandN1, `'Merged demand$'`.SampleDemandN2, `'Merged demand$'`.SampleDemandN3, `'Labor and equipment times$'`.`Typical Batch Size`, `'Labor and equipment times$'`.typical, `'Labor and equipment times$'`.`Minimum batch size`, `'Labor and equipment times$'`.`1`, `'Labor and equipment times$'`.`Maximum batch size`, `'Labor and equipment times$'`.Max " _
& " ,'=(([@[SampleDemandN]]/[@[Typical Batch Size]])*[@typical])/LaborPerFTE' as 'Labour needed for N (Typical)'" _
& " ,'=(([@[SampleDemandN]]/[@[Maximum batch size]])*[@Max])/LaborPerFTE' as 'Labour needed for N (MAX)'" _
& " ,'=(([@[SampleDemandN]]/[@[Minimum batch size]])*[@1])/LaborPerFTE' as 'Labour needed for N (MIN)'" _
& " ,'=([@[SampleDemandN1]]/[@[Typical Batch Size]])*[@typical]' as 'Labour needed for N+1 (Typical)'" _
& " ,'=([@[SampleDemandN1]]/[@[Maximum batch size]])*[@Max]' as 'Labour needed for N+1 (MAX)'" _
& " ,'=([@[SampleDemandN1]]/[@[Minimum batch size]])*[@1]' as 'Labour needed for N+1 (MIN)'" _
& " ,'=([@[SampleDemandN2]]/[@[Typical Batch Size]])*[@typical]' as 'Labour needed for N+2 (Typical)'" _
& " ,'=([@[SampleDemandN2]]/[@[Maximum batch size]])*[@Max]' as 'Labour needed for N+2 (MAX)'" _
& " ,'=([@[SampleDemandN2]]/[@[Minimum batch size]])*[@1]' as 'Labour needed for N+2 (MIN)'" _
& " ,'=([@[SampleDemandN3]]/[@[Typical Batch Size]])*[@typical]' as 'Labour needed for N+3 (Typical)'" _
& " ,'=([@[SampleDemandN3]]/[@[Maximum batch size]])*[@Max]' as 'Labour needed for N+3 (MAX)'" _
& " ,'=([@[SampleDemandN3]]/[@[Minimum batch size]])*[@1]' as 'Labour needed for N+3 (MIN)'" _
& " FROM `'Labor and equipment times$'` `'Labor and equipment times$'`, `'Merged demand$'` `'Merged demand$'`" _
& " WHERE `'Merged demand$'`.`Test Name` = `'Labor and equipment times$'`.`Test Name` AND ((`'Labor and equipment times$'`.`Equipment used`='Manual labor'))"
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "LabourDemand"
.Refresh BackgroundQuery:=False
End With
' calculation of the values
Dim LastRow As Long
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
For Each cell In Range(Cells(1, 14), Cells(LastRow, 25))
cell.FormulaR1C1 = cell.Formula
Next cell
End Sub
Любая помощь приветствуется. И как последний вопрос, как я могу адаптировать вычислительную часть, чтобы она работала на правильном листе, так что мне не нужно иметь его в качестве активного листа в моей активной книге.
Я попытался изменить мой код, но он по-прежнему не рассчитывает свои значения, если у меня нет выхода листа выбран, который является проблемой поскольку я хочу добавить несколько макросов в один единственный макрос обновления. –