[Excel 2003] Cellen activeren

Pagina: 1
Acties:
  • 940 views sinds 30-01-2008
  • Reageer

  • Beamer
  • Registratie: September 2001
  • Laatst online: 12-08 11:11

Beamer

Return of the legend

Topicstarter
Ik wil een scriptje maken in VB excel om mijn cellen in kolom C te activeren maar ik kom niet verder als onderstaande:

Range("C1:C2").Select
ActiveCell.FormulaR1C1 = _
"='H:\market\RCVonk\DATABASE\Databases ivm programma jos\\[Database.xls]Database'!R[-153]C[52]"
Range("C1:C3").Select
Range("C2").Activate
ActiveCell.FormulaR1C1 = _
"='H:\market\RCVonk\DATABASE\Databases ivm programma jos\\[Database.xls]Database'!R[-153]C[52]"
Range("C1:C3").Select
Range("C3").Activate
ActiveCell.FormulaR1C1 = _
"='H:\market\RCVonk\DATABASE\Databases ivm programma jos\\[Database.xls]Database'!R[-153]C[52]"


Met bovenstaande heb ik nu cel C1 geactiveerd. Maar ik wil dus alle cellen in kolom C activeren. Maar je kan niet zeggen |Range("C1:C450").Activate| omdat je nooit meer dan 1 actieve cel kan hebben in Excel. Ik zal dus iets van een loop moeten maken waarbij ik zeg doe dit bovenstaande iedere keer maar dan C1+1 etc. Maar ik heb geen idee wat ik daar voor CMD ik daarvoor moet maken, hoop dat jullie me kunnen helpen.

[ Voor 80% gewijzigd door Beamer op 22-12-2005 14:13 ]

25 jaar "tweaker" weliswaar low profile maar nog steeds geinteresseerd


  • Gulf_5
  • Registratie: Maart 2004
  • Laatst online: 20-10-2024

Gulf_5

Lucht-v/w-aardig

ik snap je bedoeling niet zo heel erg, zeg maar... |:(
als je alleen alle cellen tussen C1 en C450 wilt SELECTEREN dan kun je volstaan met:
Visual Basic:
1
Range("C1:C450").Select


Ik zie dat je ook een formule in de actieve cellen wilt proppen, dit zou je kunnen doen met een loopje:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
a = 1
Range("C1").Select
Do Until a = 451
If Activecell.Value = "" Then
ActiveCell.FormulaR1C1 = "jouw formule"
ActiveCell.Offset(1,0).Select
Else
ActiveCell.Offset(1,0).Select
End If
a = a + 1
Loop


Neem me niet kwalijk als ik hiermee niet bereik wat je wilt, maar je probleemomschrijving vind ik persoonlijk vrij vaag...
Mocht het wel helpen, prima dan, en succes ermee... Als je nog vragen hebt, be my (our :)) guest

btw: heb bovenstaande code uit t blote hoofdje neergeknalt en niet getest :z , dus mocht t niet werken, tell me !

[ Voor 12% gewijzigd door Gulf_5 op 22-12-2005 14:22 ]

iets met foto's...


  • Beamer
  • Registratie: September 2001
  • Laatst online: 12-08 11:11

Beamer

Return of the legend

Topicstarter
Tja was idd niet zo goede startpost maar omdat ik zelf nog als een amateur bezig ben....Maar ik heb dus een formule gekopieerd in kolom c in de cellen C1 t/m C450. Deze formule staat er nu maar die wil ik activeren. Maar omdat ik niet iedere keer F2 enter wil drukken wil ik er een VB scriptje voor maken.
Maar bovenstaande formule heb ik dus laten recorden met een macro. Hier gaat hij iedere keer opnieuw de range selecteren en iedere keer een stap verder C1, C2, C3 etc een cel activeren. Maar ten eerste ben ik dan nog handmatig bezig en ten tweede wil ik kunnen zeggen van activeer formule C1:C450, maar Excel zegt weer dit gaat niet omdat je maar max. 1 actieve cel tegelijk kan hebben. Dus die regel .Activate moet ik iedere keer laten terugkomen voor alle cellen maar dan +1, hoop dat het zo een beetje duidelijk wordt.

Simpel gezegd ik wil mijn formule acitveren die staat in de cellen C1:C450.

Dit zegt Excel:

Met de methode Activate kunt u een cel binnen een selectie activeren. Er kan altijd maar één actieve cel zijn, zelfs als een cellenbereik is geselecteerd. In de volgende procedure wordt een bereik geselecteerd en wordt een cel binnen de selectie geactiveerd zonder de selectie te wijzigen.

Sub MakeActive()
Worksheets("Sheet1").Activate
Range("C1:C450").Select
Range("C2").Activate
End Sub

Hierna zou ik dus een loopje moeten maken dat hij na C2 door gaat met C3 etc. Bijkomend detail is dat mijn formule niet één en dezelfde is en telkens een andere benaming heeft.

[ Voor 30% gewijzigd door Beamer op 22-12-2005 14:30 ]

25 jaar "tweaker" weliswaar low profile maar nog steeds geinteresseerd


  • Gulf_5
  • Registratie: Maart 2004
  • Laatst online: 20-10-2024

Gulf_5

Lucht-v/w-aardig

nog altijd snap ik dat hele activeer-geblaat niet.. (nofi)
wil je dat die cel BEREKEND wordt ?
Ben je dan in de war met de CALCULATE functie ?

Duidelijk is dat je bijvoorbeeld cel C1 hebt die verwijst naar een andere cel in een ander bestand (database.xls). Kennelijk staat automatisch rekenen uit, en staat er dus een oude of geen waarde in de cel ? klopt dit ?

Als het berekenen is wat je zoekt -> calculate dus... dan:
Visual Basic:
1
Range("C1:C450").Calculate

iets met foto's...


  • Beamer
  • Registratie: September 2001
  • Laatst online: 12-08 11:11

Beamer

Return of the legend

Topicstarter
De cel wordt inderdaad niet berekend, maar berekenen (calculate staat wel aan) en ook met F9 (calculate command) worden de regels niet geactiveerd. Je moet dus echt F2 & enter doen om de regel te activeren. En daar heb je bovenstaande excel commando voor nodig daarmee activeert hij de regel wel, dus op zich is het script goed. Maar ik wil dus een grotere activate range dan één cel en dit lukt mij voor als nog niet :(.
Ik wil dus het script aanvullen met zoiets als when C1 is activated activate C2 etc.

25 jaar "tweaker" weliswaar low profile maar nog steeds geinteresseerd


  • Gulf_5
  • Registratie: Maart 2004
  • Laatst online: 20-10-2024

Gulf_5

Lucht-v/w-aardig

zie vorige post, probeer iets met die loop constructie te maken...
gebruik de help functie voor Do...Loop (F1 in VB) etc en gebruik GoT search om wat andere loop voorbeelden te bekijken. Met de gegevens die je nu hebt zou je een heel eind moeten kunnen komen.


en vind t erg vreemd dat het niet gewoon ge-calculate word 8)7

[ Voor 15% gewijzigd door Gulf_5 op 22-12-2005 15:59 ]

iets met foto's...


  • Maasluip
  • Registratie: April 2002
  • Laatst online: 20-08 09:24

Maasluip

Kabbelend watertje

Als het echt alleen om het activeren en invoeren van de formule gaat dan met een loopje
code:
1
2
3
4
5
for i = 1 to 450
    Range("C" & i).Activate
    ActiveCell.FormulaR1C1 = _
"='H:\market\RCVonk\DATABASE\Databases ivm programma jos\\[Database.xls]Database'!R[-153]C[52]"
next i

En dat kun je denk ik ook versimpelen door niet eerst de cel te activeren maar direct Activesheet.Cell(3,i).FormulaR1C1 (oid, dit is even uit mijn hoofd) te gebruiken.

[ Voor 6% gewijzigd door Maasluip op 22-12-2005 15:59 ]

Signatures zijn voor boomers.


  • CoRrRan
  • Registratie: Juli 2000
  • Laatst online: 02-06 20:28

CoRrRan

Don't Panic!!!

Ik weet het niet hoor, maar kun je niet gewoon werken met iets als:
Visual Basic:
1
2
3
4
5
6
7
8
9
Sub UpdateLinks()

  Dim MyLink As Variant

  For Each MyLink In ActiveWorkbook.LinkSources(xlExcelLinks)
    ActiveWorkbook.UpdateLink Name:=MyLink, Type:=xlExcelLinks
  Next MyLink

End Sub
Met deze code update je al je links in je workbook en als het goed is zijn dan meteen al je formules geupdate. (Tenzij er meer in je cellen staat dan wat je tot nu toe gepost hebt.)

Ik kan nl. niets anders bedenken dan dat je eigenlijk alleen maar de links in je workbook wilt updaten. Met de code die ik net gepost hebt, moet dit zonder problemen gaan.

Excel werkt namelijk zo, dat als je links naar externe files hebt in je workbook, deze pas worden geupdate als je inderdaad je cel opnieuw laat berekenen met "F2" en "Enter", of via Edit --> Links... --> Update Values de links update in je workbook. Mijn macro'tje doet precies hetzelfde en is dus makkelijker om te gebruiken.

-- == Alta Alatis Patent == --


  • Gulf_5
  • Registratie: Maart 2004
  • Laatst online: 20-10-2024

Gulf_5

Lucht-v/w-aardig

Oja natuurlijk |:( |:( |:(
we hebben hier natuurlijk hyperlinks en geen formules... ik zit teveel te kijken naar dat gedoe met formuleR1C1 enzo... het is idd gewoon een kwestie van links updaten !

Krijg je vooraf bij het opstarten van je file niet de vraag of je de links wilt updaten??? (update links / don't update links) Die krijg ik hier op m'n werk namelijk wel altijd...

@ CoRrRaN: scherp hoor ;)
@ CoRrRan nog een keertje: kan ik btw datzelfde principe van jou ook in een Open_Workbook gebruiken om er voor te zorgen dat ik genoemde vraag NIET meer krijg ? Heb een hekel aan pop-ups en vragen bij t opstarten van files :X

iets met foto's...


  • Beamer
  • Registratie: September 2001
  • Laatst online: 12-08 11:11

Beamer

Return of the legend

Topicstarter
@Maasluip

Thankx dit werkt perfect om de cellen te activeren. Ik moet echter die activate regel wel laten staan anders werkt het niet, (dan worden de cellen niet geactiveerd.)

Nu ben ik (zoals je mis wel doorhebt echt gewoon een n00b met VB etc.) Daarom heb ik 2 vraagjes omdat ik het wil begrijpen. Waarm gebruik je For i = 1 to 450, waar staat die i voor?
En jij geeft toch de 'formuleregel" mee in de activate cell, die vervangt hij dan gewoon iedere keer met de formule die staat in de active cell ofzo? Want het updaten gaat wel goed. Maar het komt op mij over dat je die regel "statisch" in die formule zet. Hoe werkt dit dan?

25 jaar "tweaker" weliswaar low profile maar nog steeds geinteresseerd


  • Maasluip
  • Registratie: April 2002
  • Laatst online: 20-08 09:24

Maasluip

Kabbelend watertje

Je moet een variabele hebben om de loop te kunnen tellen. Of dat ding nu i of LoopCounter heet is niet van belang (en van oudsher wordt een simpele loopcounter i genoemd).

Ik zet die formule er statisch in ja, maar dat doe je zelf ook. Wat het loopje doet is in feite niets anders als jou eerste opzetje (minus die Range(...).Select regels).
Als je het algemeen wil maken (dus de formule die in de cel staat hergebruiken) dan moet je eens proberen of Activecell.FormulaR1C1 = Activecell.FormulaR1C1 ook werkt.

Signatures zijn voor boomers.


  • Beamer
  • Registratie: September 2001
  • Laatst online: 12-08 11:11

Beamer

Return of the legend

Topicstarter
Ok nou ik heb het nog ff getest maar in een eerste oogoplsag leek de eerste oplossing wel te werken maar de data klopte dus niet. Ik heb toen de regel van de statische formule verwijderd en dus alleen het activate gebeuren met loop laten staan, maar dan worden de regels niet meer geactiveerd. Ook met de door jouw gedane suggestie van Activecell.FormulaR1C1 = Activecell.FormulaR1C1 worden de regels niet geactiveerd.
Ik hoop dat je nog andere suggesties hebt om de regels te activeren. Maar vooralsnog ben ik dus niet geholpen.

25 jaar "tweaker" weliswaar low profile maar nog steeds geinteresseerd


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Misschien moet je toch eens proberen anders te verwoorden wat je nu wilt. Je hangt een beetje op de term activeren, maar ik vrees dat je een verkeerd beeld hebt van wat dat is. Een cel activeren doet niets meer dan de cel koppelen aan de invoerregel. Er gebeurt dus verder niks.

Kijk even naar [rml]CoRrRan in "[ Excel 2003] Cellen activeren"[/rml], dat lijkt denk ik meer op wat je zoekt.

offtopic:
wil je code die je post tussen [code][/code] tags plaatsen? Dat leest wat prettiger
;)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Beamer
  • Registratie: September 2001
  • Laatst online: 12-08 11:11

Beamer

Return of the legend

Topicstarter
Het is echt alleen acitveren maar ook het geen wat CoRrRan heeft gepost helpt niet. Moet ik nog wat aan dat script wijzigen kwa namen of niet? (sorry heb niet veel verstand van VB).

Uitgangspunt is regels in kolom C met als tabblad naam Techniek de formules in de cellen acitveren.

Dit is bv een rege/formule:
code:
1
="='H:\market\RCVonk\DATABASE\Databases ivm programma jos\\[Database.xls]Database'"&D15

Deze regel blijft dus gewoon voluit in excel staan en wordt niet geactiveerd tot dat ik er een macro of een f2+enter op los laat.

Ik kan ook geen gebruik maken in een script van een statische formule verwijzing omdat de formules iedere keer anders zijn.

[ Voor 12% gewijzigd door Beamer op 27-12-2005 15:45 ]

25 jaar "tweaker" weliswaar low profile maar nog steeds geinteresseerd


  • Maasluip
  • Registratie: April 2002
  • Laatst online: 20-08 09:24

Maasluip

Kabbelend watertje

En als je het dan met een tussenoplossing doet, in de loop het volgende zet:
code:
1
2
    sFormula = ActiveCell.FormulaR1C1
    ActiveCell.FormulaR1C1 = sFormula

Dus je kopieert eerst wat in de cel staat, en dan zet je dat weer terug in de cel. Misschien als extratje tussendoor de cel ook even leeg maken:
code:
1
2
3
    sFormula = ActiveCell.FormulaR1C1
    ActiveCell.FormulaR1C1 = ""
    ActiveCell.FormulaR1C1 = sFormula

Signatures zijn voor boomers.


  • Beamer
  • Registratie: September 2001
  • Laatst online: 12-08 11:11

Beamer

Return of the legend

Topicstarter
Maasluip schreef op dinsdag 27 december 2005 @ 15:54:
En als je het dan met een tussenoplossing doet, in de loop het volgende zet:
code:
1
2
    sFormula = ActiveCell.FormulaR1C1
    ActiveCell.FormulaR1C1 = sFormula

Dus je kopieert eerst wat in de cel staat, en dan zet je dat weer terug in de cel. Misschien als extratje tussendoor de cel ook even leeg maken:
code:
1
2
3
    sFormula = ActiveCell.FormulaR1C1
    ActiveCell.FormulaR1C1 = ""
    ActiveCell.FormulaR1C1 = sFormula
Ook dan worden de regels niet geactiveerd :( (heb het bestand naar je gemaild overigens)

25 jaar "tweaker" weliswaar low profile maar nog steeds geinteresseerd


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Windows moet je activeren, office moet je activeren en zo is er nog wat te verzinnen, maar Excel formules activeer je niet. M.a.w. leg nu eens gewoon uit wat je wilt bereiken, zonder het woord 'activeren' te gebruiken, want dat gebruik je iig verkeerd en dan snapt niemand (of tenminste ik niet) er iets van.

Btw:
code:
1
="='H:\market\RCVonk\DATABASE\Databases ivm programma jos\\[Database.xls]Database'"&D15

is geen geldige syntax in een cel.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Beamer
  • Registratie: September 2001
  • Laatst online: 12-08 11:11

Beamer

Return of the legend

Topicstarter
@niesje

Zal het nog een keer proberen met acitveren bedoel ik dat de formule gaat werken in excel. De regel die jij hebt gequote zie je dus staan nu voluit. Maar die regel is een formule die nog moet worden berekend, want wanneer je f2+enter drukt dan "activeert" hij die cel en wordt het berekend en komt er een waarde uit. Het rare is dus dat hij eerst (waarschijnlijk omdat de formule van elders wordt gekopieerd en niet vanuit de cel wordt geconfigureerd) de formule laat zien zoals die is i.p.v. de uitkomst ervan.
Dus de regel zoals jij hem hebt gequote zo zie ik hem ook in mijn excel staan (x500) maar ik dil de uitkomst van die regel zien. en die uitkomst krijg ik wanneer ik op f2+enter klik en eerder niet. En dit proces wil ik weer automatiseren.

[ Voor 4% gewijzigd door Beamer op 27-12-2005 16:47 ]

25 jaar "tweaker" weliswaar low profile maar nog steeds geinteresseerd


  • Gulf_5
  • Registratie: Maart 2004
  • Laatst online: 20-10-2024

Gulf_5

Lucht-v/w-aardig

als ik de formule bekijk zoals die staat in Niesje zijn post dan is het eerste wat me opvalt, de hoeveelheid apostrophes (aanhalingstekens :)) het lijkt alsof ze verkeerd staan... volgens mij moeten ze anders staan:
Visual Basic:
1
2
Range("C8").Select
ActiveCell.FormulaR1C1 = "='H:\market\RCVonk\DATABASE\Databases ivm programma jos\\[Database.xls]Database'!R-153C52"
VBA zet de formules neer als tekst... (of jij zelf) doordat je de aanhalingstekens verkeerd neerzet...

je maakt het ons (en jezelf) niet echt makkelijk... :+

En misschien stom hoor dat ik dit zeg: maar heb je al bij celeigenschappen gekeken of die misschien op TEKST staat ?

/me Gulf_5 vraagt zich af of er iets niet klopt met dat rooie streepje 8)

[ Voor 9% gewijzigd door Gulf_5 op 27-12-2005 17:11 ]

iets met foto's...


  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 23:54
@Niesje: TS heeft het over het updaten van data uit een extern werkboek. Daarvoor moet je schijnbaar de cel activeren+editten, waardoor Excel aan't herberekenen gaat. De normale calculate doet het niet.

@ TS: Ik denk dat de methode van CoRrRan wel zoden aan de dijk zet, maar het is een beetje lastig debuggen.
Probeer deze macro eens te draaien
Visual Basic:
1
2
3
4
5
6
7
8
9
10
Sub UpdateLinks()

  Dim MyLink As Variant
  Dim teller as integer
  For Each MyLink In ActiveWorkbook.LinkSources(xlExcelLinks)
    ActiveWorkbook.UpdateLink Name:=MyLink, Type:=xlExcelLinks
    teller = teller+1
  Next MyLink
msgbox teller
End Sub

Er zou een messagebox op moeten duiken met een getal. Is dat getal gelijk aan je aantal links (Te vinden in Edit-Links)
* onkl denkt dat de VB parser Gulf_5's code geen nette code vindt.
Met Gulf_5: TS, even buiten het activeren, kijk eens of de pogingen die je waagt wel de goede formule plakken, dus, als je handmatig update, verschijnt dan de goede waarde?

[ Voor 17% gewijzigd door onkl op 27-12-2005 17:23 ]


  • Gulf_5
  • Registratie: Maart 2004
  • Laatst online: 20-10-2024

Gulf_5

Lucht-v/w-aardig

toch vind ik het niet helemaal zuivere koffie, op mijn werk hebben we bestanden die stampvol met zulke links zitten... en bij het opstarten van zo'n file krijgen we behalve de macro vraag, ook een update-links keuze voorgeschoteld (update / don't update). Vervolgens worden al de "activeer"-acties waar TS hier ook mee zit, automatisch uitgevoerd.
Ik heb me er op mijn werk nooit in verdiept, maar is daar niet ergens een of ander vinkje voor te zetten ?

/me Gulf_5 is het eens met onkl, code is niet zo netjes, maar heeft ook geen idee hoe die anders zou moeten :+

iets met foto's...

Pagina: 1