[Excel, VBA] Help voor updaten fields

Pagina: 1
Acties:

  • hiostu
  • Registratie: Juli 2000
  • Laatst online: 05-05 13:13
Ik heb het volgende probleem

Ik heb zelf een functie geschreven die een aantal dingen telt.

Nu worden er geen cellen of kolommen in de formule meegegeven, dus als er iets toegevoegd wordt aan de lijst dan worden de waardes van de cellen die de formule bevatten niet automatisch geupdate.

Nu is mijn vraag hoe kan ik er voor zorgen dat deze cellen automatisch geupdate worden. Dit lukt me namelijk helemaal niet. Het meegeven van de kollomen lukt mij niet.

Dus 2 mogelijkheden, het meegeven van de kolommen in de funtie (hoe???)

of een macro die de cellen (mag een selectie zijn) update.

Kan iemand mij helpen? Want ik heb me al rot gezocht, maar kan ook geen goede documentatie vinden.

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

:?

Ik snap er echt de ballen van ....

Maar hier een poging:
Wat wil je tellen, hoe ziet het eruit en wat bedoel je met waardes van cellens die de formule bevatten?

Dus 2 mogelijkheden:
1. Het meegeven van kolommen in de functie? Wat wil je met die input. Het hangt er nl van wat je wilt doen met die kolommen
2. een macro kan cellen updaten

algemeen:
Documentatie vind je in de VBA reference die standaard met Office wordt meegeleverd (wordt alleen niet standaard geinstalleerd).

[ Voor 5% gewijzigd door BtM909 op 14-02-2003 09:58 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • hiostu
  • Registratie: Juli 2000
  • Laatst online: 05-05 13:13
Ok ik heb net een oplossing gevonden (na een aantal uurtjes zoeken), ik heb namelijk totaal geen ervaring met VB of VBA. Hier is mijn code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Function GiveDefects(introduced, detected, start As Range, finish As Range)
    Dim Row As Integer
    Dim Amount As Integer
    Dim Colomn1 As String
    Dim Colomn2 As String
    Dim Pos1 As String
    Dim Pos2 As String

    Row = 6
    Amount = 0
    Colomn1 = "Defects!D"
    Colomn2 = "Defects!E"
    Pos1 = Colomn1 & Row
    Pos2 = Colomn2 & Row
    introduced = introduced & "*"
    detected = detected & "*"
    
    Do While (Range(Pos1).FormulaR1C1 <> "")
        If (Range(Pos1).FormulaR1C1 Like detected) Then
            If (Range(Pos2).FormulaR1C1 Like introduced) Then
                Amount = Amount + 1
            End If
        End If
        Row = Row + 1
        Pos1 = Colomn1 & Row
        Pos2 = Colomn2 & Row
    Loop
    GiveDefects = Amount
End Function


Zoals je ziet is het misschien niet helemaal mooi gecodeerd.

De oplossing is nu gewoon de ranges meegeven in de functie die worden echter helemaal niet in de functie verder gebruikt. Dit is een tijdelijke oplossing maar eigenlijk wil ik dit eventueel wel doen, ik weet alleen hoe. Je ziet ook dat de kolommen waar nu gezocht wordt gewoon defefinieerd zijn.

Misschien kun je een beetje zien dat ik C++ programmeer en geen VBA, want volgens mij hoort het niet op deze manier. En ik moet zeggen dat ik de help functie van VBA erg slecht vind.

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Als je de range moet bepalen (voor een loop oid) en de lijst met gegevens is aaneensluitend, dan kan je bijv. ook doen:

code:
1
2
3
4
5
Dim strRij As String

    Range("A1").Select
    Selection.End(xlDown).Select
    strRij = ActiveCell.Row


of vanaf beneden:

code:
1
2
3
    Range("A65536").Select
    Selection.End(xlUp).Select
etc...


Hangt er vanaf of je een onafgebroken lijst hebt, of een lijst met gaten (dan gaat het eerste voorbeeld niet goed werken)

edit:

Kom er net achter dat er een snellere manier is: |:(

code:
1
ActiveCell.SpecialCells(xlLastCell).Select

[ Voor 18% gewijzigd door BtM909 op 14-02-2003 10:42 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • hiostu
  • Registratie: Juli 2000
  • Laatst online: 05-05 13:13
Het probleem wat jij met je laatste post laat zien, is dat je de range invult ("A1"), dit wil ik dus niet vast erin zetten. Of kan dat wel met VBA?

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

hiostu schreef op 14 February 2003 @ 10:40:
Het probleem wat jij met je laatste post laat zien, is dat je de range invult ("A1"), dit wil ik dus niet vast erin zetten. Of kan dat wel met VBA?
Check mijn edit!

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • hiostu
  • Registratie: Juli 2000
  • Laatst online: 05-05 13:13
uhm ja daar snap ik dus nu ff de ballen niet van.......

Ik zal me dan toch ff moeten verdiepen in VBA, maar ik weet niet of ik daar de kans voor krijg van het werk.

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Wat snap je niet?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • hiostu
  • Registratie: Juli 2000
  • Laatst online: 05-05 13:13
wat precies deze functie doet:

code:
1
ActiveCell.SpecialCells(xlLastCell).Select

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Die selecteert automagisch de laatste cell (en zodoende kan je de row bepalen) waar gegevens in staan...

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • hiostu
  • Registratie: Juli 2000
  • Laatst online: 05-05 13:13
uhm ok, is het niet mogelijk om dit stukje:

code:
1
2
Colomn1 = "Defects!D"
Colomn2 = "Defects!E"

Hier stel ik dus de kolommen in (daarna ga ik concateneren om zo de rijen af te lopen).

Te wijzigen aan de hand van de waarden die hier:
code:
1
Function GiveDefects(introduced, detected, ---start As Range, finish As Range----)


Mee gegeven worden, nu wordt deze formule als volgt aangeroepen:
code:
1
=GiveDefects("bla"; "bla"; A:A; B:B)


Dus als ik Z:Z; X:X invul dat het dan alsvolgt wordt:
code:
1
2
Colomn1 = "Defects!Z"
Colomn2 = "Defects!X"


??????

[ Voor 8% gewijzigd door hiostu op 14-02-2003 11:54 ]

Pagina: 1