Option
Explicit
Option
Base 1
Private
WithEvents
Chart_NormalScaling
As
Excel.Chart
Private
WithEvents
Chart_LogarithmicScaling
As
Excel.Chart
Private
Sub
Chart_NormalScaling_Calculate()
DoEvents
End
Sub
Private
Sub
Chart_LogarithmicScaling_Calculate()
DoEvents
End
Sub
Public
Function
GetDamperCurveTrendCoefficients(
ByVal
curveName
As
String
,
ByRef
coeffA
As
Double
,
ByRef
coeffB
As
Double
)
Set
Chart_NormalScaling = ChartObjects(damperCurveNormalScaling).Chart
Set
Chart_LogarithmicScaling = ChartObjects(damperCurveLogarithmicScaling).Chart
Dim
currentChart
As
Chart
Dim
fName
As
String
Dim
formulaString
As
String
Dim
splitA()
As
String
Dim
SplitB()
As
String
fName = ThisWorkbook.Path &
"\temp.gif"
Call
SetChartData(
Me
, curveName, damperCurveNormalScaling, damperCurveLogarithmicScaling)
formulaString = Chart_NormalScaling.SeriesCollection(1).Trendlines(1).DataLabel.text
splitA = Split(Replace(formulaString,
"y = "
,
""
),
"e"
)
SplitB = Split(splitA(1),
"x"
)
coeffA = splitA(0)
coeffB = SplitB(0)
End
Function
Private
Function
LastUsedRow(
ByVal
Worksheet
As
Excel.Worksheet)
As
Long
Dim
lRow
As
Long
On
Error
Resume
Next
lRow = Worksheet.Cells.Find(What:=
"*"
, _
after:=Range(
"A1"
), _
LookAt:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=
False
).row
LastUsedRow = lRow
On
Error
GoTo
0
End
Function
Private
Function
LastUsedColumn(
ByVal
Worksheet
As
Excel.Worksheet)
As
Long
Dim
lCol
As
Long
On
Error
Resume
Next
lCol = Worksheet.Cells.Find(What:=
"*"
, _
after:=Range(
"A1"
), _
LookAt:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:=
False
).Column
LastUsedColumn = lCol
On
Error
GoTo
0
End
Function
Private
Function
SetChartData(
ByVal
Worksheet
As
Excel.Worksheet, _
ByVal
curveName
As
String
, _
ByVal
normalScalingChartName
As
String
, _
ByVal
logScalingChartName
As
String
)
Dim
i
As
Integer
Dim
chartDataRange
As
Range
If
curveName =
""
Then
Exit
Function
End
If
For
i = DAMPER_CURVES_DATA_1stROW
To
LastUsedRow(Worksheet)
With
Worksheet
If
.Cells(i, 1).value = curveName
Then
Set
chartDataRange = .Range(.Cells(i, DAMPER_CURVES_DATA_1stCOL), _
.Cells(i + 1, DAMPER_CURVES_DATA_1stCOL + 29))
Call
.ChartObjects(normalScalingChartName).Chart.SetSourceData(Source:=chartDataRange)
Call
.ChartObjects(logScalingChartName).Chart.SetSourceData(Source:=chartDataRange)
Exit
Function
End
If
End
With
Next
End
Function