macro automatisch starten bij wijziging waarde cel

Status
Niet open voor verdere reacties.

koekoek1234

Nieuwe gebruiker
Lid geworden
12 nov 2007
Berichten
2
coordinaten cel met functieaanroep zoeken

Ik ben een zeer grote leek in vba, en eigenlijk ook in alle andere programmeertalen. Maar ik ben nu voor school toch achter excel een macrotje aan het schrijven en dat lukt me vrij goed (thx msdn, google en wikipedia :d). Maar nu zit ik met volgende vraag. ik ben op zoek naar een manier om de coordinaten waarin ik mijn functie aanroep te achterhalen. dus de cel waar =functie(variabele) in staat. Dit is makkelijk omdat ik die dan kan gebruiken want ik wil daar dan beginnen met het weergeven van een array. Anders moet ik telkens opnieuw die variabelen ingeven en ik heb die functie een 6tal keer nodig.
hopelijk heb ik een duidelijke vraag gesteld en is er een simpele oplossing. alvast bedankt.
 
Laatst bewerkt:
het is mss makkelijker als ik gewoon mijn code ook post. niet letten op de vele schoonheidsfoutjes, maar verbeteringen mogen nog altijd. ik heb dus ondertussen al 2 problemen.
1 ik zou graag de coordinaten van de cel waarin ik deze functie aanroep gebruiken ipv de huidige X en y.
2 sinds ik die regeltjes heb toegevoegd om het naar mijn cellen te schrijven krijg ik altijd in de cel waarin = interpolatie(c83) staat een melding #waarde of zoiets en geeft hij die arrays niet weer op mijn rekenblad. ervoor kwam alles in de msgbox (had ik gewoon gedaan om te kijken of het zover al klopte) en kwam er in die cel een 0. Maar als ik dan op dat uitroepteken druk en ik doe waarden doorlopen verschijnen mijn arrays wel op mijn rekenblad. Dus ergens moet er nog wel een stom foutje zitten. Kben het hier blijkbaar weer veel te moeilijk aant maken of heb ergens een domme fout gemaakt. Hopelijk zien jullie het snel en kan ik eindelijk terug rustig slapen.
MVG

Bert

Code:
Function FindIpValue(deplacement As Double)
    
    Dim rowCounter As Integer
    Dim thisColumn As Integer
    Dim rowValue As Variant
    Dim maxRow As Integer
    Dim flag As Boolean
    Dim resultRow As Integer

    rowValue = 1
    rowCounter = 2
    thisColumn = 3 'de kolom waarin er gekeken moet worden, C voor SW, B voor FW
    maxRow = 121 'tabel bevat maar 121 rijen, kwestie van ni bezig te blijven
    flag = False
    
    Do While flag = False
        rowValue = Worksheets("Interpolatie").Cells(rowCounter, thisColumn).Value
        If rowValue > deplacement Then
            flag = True
            resultRow = rowCounter - 1
            Exit Do
        Else
            rowCounter = rowCounter + 1
        End If
    Loop
    
    FindIpValue = resultRow
    Exit Function
    
End Function

Function Interpolatie(deplacement As Double)

Dim ipRow As Integer
Dim ipcolumn As Integer
Dim namen(1 To 6) As String
Dim waarden(1 To 6) As Double
Dim counter As Integer
Dim thisColumn As Integer
Dim x As Integer
Dim y As Integer

    thisColumn = 3
    ipRow = FindIpValue(deplacement)
    counter = 4
    x = 11
    y = 5
    
    Do Until counter = 10
        namen(counter - 3) = Worksheets("Interpolatie").Cells(1, counter).Value
        waarden(counter - 3) = (Worksheets("Interpolatie").Cells(ipRow + 1, counter).Value - Worksheets("Interpolatie").Cells(ipRow, counter).Value) / (Worksheets("Interpolatie").Cells(ipRow + 1, thisColumn).Value - Worksheets("Interpolatie").Cells(ipRow, thisColumn).Value) * (deplacement - Worksheets("Interpolatie").Cells(ipRow, thisColumn).Value) + Worksheets("Interpolatie").Cells(ipRow, counter).Value
        'MsgBox (namen(counter - 3))
        'MsgBox (waarden(counter - 3))
        Cells(x + counter - 3, y).Value = namen(counter - 3)
        Cells(x + counter - 3, y + 1).Value = waarden(counter - 3)
        counter = counter + 1
    Loop
    
End Function
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan