Funktion virker ikke automatisk ved opstart
HejJeg har fundet en function i et ADD-on til Excel som jeg godt kunne tænke mig at inkludere i min Excel2007-fil (.xlsm). Funktionen er beskrevet nedenfor.
Funktionen fungerer fint, når jeg taster den ind. Men når jeg åbner arket retunerer den fejl alle steder hvor funktion er indtil jeg går ind i cellen og trykker Enter. Det virker ikke at trykke "Beregning ark nu".
Nogen ideer til, hvad der kan hjælpe??
Mvh
JDAE
_______________________
Funktion:
Private Function IsVector(A) As Boolean
'check if argument is a true vector array
On Error GoTo Error_Handler
IsVector = False
N = UBound(A, 1)
IsVector = True
N = UBound(A, 2)
IsVector = False
Error_Handler:
End Function
Private Function IsMatrix(A) As Boolean
'check if argument is a true matrix array
On Error GoTo Error_Handler
IsMatrix = False
N = UBound(A, 1)
N = UBound(A, 2)
IsMatrix = True
Error_Handler:
End Function
Sub LoadVector(vector, w, N)
'Trasform something (?!) (range, matrix, vector, etc.) into vector
'modified 27-6-02
If IsObject(w) Then
'Vector is selected range
Dim area As Range
Set area = w
If area.Columns.Count = 1 Then
rows_max = ActiveSheet.Rows.Count
N = area.Cells.Count
If N = rows_max Then
'full column selected. Example: (A:A)
r1 = area.End(xlDown).Row
If area.Cells(2) = "" And r1 = rows_max Then
N = 1
Else
N = r1
End If
End If
Else
col_max = ActiveSheet.Columns.Count
N = area.Cells.Count
If N = col_max Then
'full row selected. Example: (2:2)
c1 = area.End(xlToRight).Column
If area.Cells(2) = "" And c1 = col_max Then
N = 1
Else
N = c1
End If
End If
End If
'Check Title Cells
k = 0
If Not IsNumeric(area.Cells(1)) Then
N = N - 1
k = 1
End If
ReDim vector(1 To N)
For i = 1 To N
vector(i) = area.Cells(i + k)
Next i
ElseIf IsMatrix(w) Then
'check dimension
If UBound(w, 1) > UBound(w, 2) Then
'vector column
N = UBound(w, 1)
ReDim vector(1 To N)
For i = 1 To N: vector(i) = w(i, 1): Next
Else
'vector row
N = UBound(w, 2)
ReDim vector(1 To N)
For i = 1 To N: vector(i) = w(1, i): Next
End If
ElseIf IsVector(w) Then
'true vector (finally!)
N = UBound(w)
ReDim vector(1 To N)
For i = 1 To N: vector(i) = w(i): Next
Else
N = 0 'something error
End If
End Sub
Function M_DIAG(Diag)
' returns scalar product (inner)
'this version can be nested with ProdVect()
'ver. 27-6-02 thank to Robert Pigeon
Dim w(), d()
LoadVector w, Diag, N
ReDim d(1 To N, 1 To N)
For i = 1 To N
For j = 1 To N
If i = j Then d(i, i) = w(i) Else d(i, j) = 0
Next j
Next i
M_DIAG = d
End Function
Function MDiag(Diag): MDiag = M_DIAG(Diag): End Function
