Avatar billede JDAE Nybegynder
12. februar 2010 - 21:34 Der er 1 kommentar

Funktion virker ikke automatisk ved opstart

Hej

Jeg 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
Avatar billede oleelo Nybegynder
14. februar 2010 - 21:40 #1
Hej
Prøv at indsætte dette i ThisWorkbook modulet

Private Sub Workbook_Open()
Application.CalculateFull
End Sub

mvh oleelo
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester