• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

variabele database bepalen

  • Onderwerp starter Onderwerp starter Imod
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Imod

Gebruiker
Lid geworden
13 nov 2003
Berichten
481
Hallo;

Ik heb een macro opgenomen om een bepaald gebied in excel als database te bepalen voor het inlezen naar een begrotingsprog.
Dit zijn altijd gedeelten van de kolommen A t/m N
Ik heb zelf de macro hiervoor opgenomen maar deze is niet variabel:
Sub database()
'
' database Macro
' De macro is opgenomen op 22-3-2004 door Imod.
'

'
ActiveWorkbook.Names.Add Name:="Database", RefersToR1C1:= _
"=STANSCHU!R98C1:R112C14"
End Sub

Mij vraag is wat moet hieraan veranderen zodat ik een willekeurig aantal cellen aaneengesloten op kolom A t/m N heb geselecteerd en deze met de macro de naam database wil geven?
Dit komt bij mij geregeld voor en een macro hiervoor zou handig zijn.

mvg Imod
 
CurrentRegion

Beste Imod,

Via een macro legt Excel altijd precies vast wat je selecteert. Via VBA heb je de opdracht 'CurrentRegion'. Kijk voor dit trefwoord in de helpschermen. Je vindt dan ook een voorbeeld, aan de hand waarvan je de macro-code die je hebt kunt aanpassen.

De eigenschap 'CurrentRegion' is in VBA het equivalent van Ctrl+* in een werkblad.

Succes.
 
selectie

Hallo,

Ik zou zoiets kunnen bedenken dat je met een geselecteerd gebied wel dit met een macro kunt oplossen, het gebied selecteer ik al voordat ik de macro in werking zet.

mvg Imod.
 
Hoi Imod,

Er is een hele mooie Excel/VBA oplossing met veel potentieel:

De toverformule is weer SOMPRODUCT voor degene die al wat langer meekijken. :cool:

Stel A1: =SOMPRODUCT(MIN((Bereik<>"")*RIJ(Bereik)))+ RIJ(Bereik) -1
Dit is de eerste regel waar je iets hebt ingevuld.

Stel A2: =SOMPRODUCT(MAX((Bereik<>"")*RIJ(Bereik)))+ RIJ(Bereik) -1
Dit is de laatste regel waar je iets hebt ingevuld.

Met de VBA-code lees je dit in:
R1=Range("A1"):R2=Range("A2")

Je geselecteerde gebied betreft altijd de kolommen A:N; Je Range stel je dus samen:
=ActiveWorkbook.Names.Add Name:="Database", RefersToR1C1:="=STANSCHU!A"&R1&":N&R2

Wat heeft dit voor potentieel:
Stel je maakt een maandoverzicht en je wilt de resultaten van die maand presenteren:
A1 wordt =SOMPRODUCT(MIN((MAAND(Bereik_datum)=maand)*RIJ(Bereik_waarde)))+ RIJ(Bereik) -1
of de omzet van een medewerker in een maand:
A1 wordt =SOMPRODUCT(MIN((Bereik_medewerkers=medewerker)*(MAAND(Bereik_datum)=maand)*RIJ(Bereik_waarde)))+ RIJ(Bereik) -1

Jeroen
 
CurrentRegion

Beste Imod,

Met de opdracht 'CurrentRegion' in de macro bepaalt Excel het gebied voor je. Dat hoef je dus niet zelf te doen. En die oplossing zoek je. Kijk even in Help, zoals ik al voorstelde.
 
Geplaatst door jzeedijk
Er is een hele mooie Excel/VBA oplossing met veel potentieel: De toverformule is weer SOMPRODUCT voor degene die al wat langer meekijken. :cool:
Jeroen
Die somproduct-oplossing lijkt me in vba nou niet bepaald aan te bevelen.
 
Laatst bewerkt:
vraag

Hallo allemaal;

In de cellen kan ik geen formules bijzetten omdat de waarden in de cellen (al met een formule) ergens anders worden weggehaald.

Kan het niet door de macro iets aan te passen zodat excel het bereik variabel ziet door bijvoorbeeld
haakjes te plaatsen inplaats van een vast adres.

Ik doe een gok:
ActiveWorkbook.Names.Add Name:="Database", RefersToR1C1:= _
"=STANSCHU!R<>C1:R<>C14"
End Sub

Dit werkt niet maar misschien weet iemand of er iets in deze richting gezocht kan worden,
Dit lijkt mij het makkelijkste.

Hallo femda-punt-com: je stelt voor 'CurrentRegion'
Ik heb geen idee waar ik dit in moet zoeken,
Heb je misschien een voorbeeld??

mvg Imod
 
Voorbeeld

The CurrentRegion Property

If you need to work with an entire range of cells (such as a worksheet database, or list), the CurrentRegion property will be useful. This property returns a range object. To understand how this works, experiment with the Current Region option in the Go To Special dialog box (press F5, then click Special).

The statement below selects the current region for cell A1.

Range("A1").CurrentRegion.Select

-------------------------------------

Meer: http://www.j-walk.com/ss/excel/tips/tip10.htm
 
Hoi Imod,

Ik bedoelde hier natuurlijk:
=ActiveWorkbook.Names.Add Name:="Database", RefersToR1C1:="=STANSCHU!R"& R1 &"C1:R"& R2 &"C14"

Jeroen
 
Opgelost

Hallo Jeroen;

Ik had je regel gekopieerd naar de macro en kreeg eerst nog een foutmelding -

Een _ voor "=STANSCHU!R" & R1 & "C1:R" & R2 & "C14"

Hij doen het nu goed, dit is precies wat ik in gedachten had. (de macro wijzigen)

Mijn hartelijk dank daarvoor,

Had ik nog een vraagje,
Ik wil 2 macro's koppelen aan 2 knopnamen (waaronder deze) die geplaatst zijn onder een menu naam "Inlezen" (deze geplaatst naast menu "help")
dat "Inlezen" alleen zichtbaar is als deze sheet geopend is.

Ik heb dit zo neergezet maar als ik deze sheet sluit en daarna weer open dan staat er niets meer???

mvg Imod
 
Hoi Imod,

Ik wist dat het kon, maar mijn harde schijf liet mij in de steek.

For Each w In Workbooks
If w.Name = "bestand.xls" Then Commandbutton1.visible=true Else Commandbutton1.visible=False
Next w

Jeroen
 
Re: selectie

Geplaatst door Imod
Ik zou zoiets kunnen bedenken dat je met een geselecteerd gebied wel dit met een macro kunt oplossen, het gebied selecteer ik al voordat ik de macro in werking zet. mvg Imod.
Goed gedacht. Daarom heb je ook helemaal geen formules nodig en volstaat het om deze korte macro uit te voeren:

Sub test()
ActiveWorkbook.Names.Add Name:="Database", RefersTo:=Selection
End Sub

fra.
 
Nog beter

Hallo Fra

Deze macro is korter en werkt nog beter, ik krijg nu ook database in het naamvak te staan, bedankt ervoor.

Maar ik zit nog steeds met een nieuwe menu naam, het lukt mij niet om deze te koppelen aan een sheet en niet altijd als ik excel opstart dat hij dan gelijk bovenaan in het menu staat.
Als hij niet gekoppeld is aan een sheet dan vervallen de koppelingen met de macro's.
Het moet kunnen maar hoe??

mvg Imod
 
Geplaatst door Imod
Maar ik zit nog steeds met een nieuwe menu naam, het lukt mij niet om deze te koppelen aan een sheet en niet altijd als ik excel opstart dat hij dan gelijk bovenaan in het menu staat. Als hij niet gekoppeld is aan een sheet dan vervallen de koppelingen met de macro's.
Als ik het goed begrijp heb je in de standaardmenubalk naast het item "Help" een menu-optie toegevoegd met de naam "Inlezen", en als je de werkmap opslaat en weer opent dan is "Inlezen" verdwenen. Als dat zo is, dan vermoed ik dat er vba-code is die die optie doet verdwijnen. Die code zou kunnen staan:
- in de werkmap die je op dat moment gebruikt
- in Personal.xls (in de XLStart-map)
- of in een bestand dat als invoegtoepassing in gebruik is.
Controleer dus eerst of je ergens vba-code ziet staan waar het woord "commandbars" in voorkomt en plaats zo mogelijk die code hier.

Verder is het me niet helemaal duidelijk of de optie "Inlezen" zichtbaar moet worden als je een bepaalde werkmap (een bestand) opent, ofwel als in een reeds geopende werkmap een bepaald werkblad wordt geactiveerd.
 
test

Hallo fra of anderen,

Ik heb een test als bijlage toegevoegt
Ik hoop dat de knop "Schuur" naast help komt te staan.
De knop Schuur haald een macro van het tabblad
"Begroot"vandaan
Als je deze test open dan komt het menu "Schuur" er te staan - sluit je deze weer dan gaat die knop weer weg.

Deze macro is een hele tijd terug gemaakt en ik heb zelf de knop eraan gekoppeld - in vorige versie's Excel -
misschien maakt dit wat uit.

Wijzigen knop Schuur wil niet, er zoeen bijzetten die ook alleen komt als je dit blad opend wil ook niet!!!

Misschien heb je hier wat aan?
Ik hoop dat hij bij jullie hetzelfde doet
mvg Imod
 

Bijlagen

Jammer dat je mijn laatste vraag niet beantwoordde, waardoor het me nog niet helemaal duidelijk is wat je bedoelt, maar ik doe een poging op grond van wat ik denk dat je wil.
Als de door jou toegevoegde menu-optie alleen beschikbaar moet zijn als een bepaald werkblad wordt geselecteerd, zou je bij activeren van het werkblad de menu-optie kunnen laten aanmaken en bij selecteren van een ander werkblad weer laten verwijderen, maar omdat je de "schuur"-optie al hebt, lijkt het mij eenvoudiger om die zichtbaar te maken (indien gewenst), resp. te verbergen (indien gewenst). Daartoe plaats je in het venster van het betreffende werkblad (het blad waarin de betreffende macro's moeten werken):
Private Sub worksheet_activate()
CommandBars(1).Controls("Schuur").Visible = True
End Sub
Private Sub worksheet_deactivate()
CommandBars(1).Controls("Schuur").Visible = False
End Sub
Verder kun je het best bij openen van de werkmap de menu-optie meteen zichtbaar maken. Daartoe moet je enkel bij openen het betreffende werkblad laten selecteren. Plaats daartoe in het venster van "ThisWorkbook":
Private Sub workbook_open()
Worksheets("Naam werkblad waarop de macro's moeten werken").Activate
End Sub
Nu nog aan je menu-optie(s) de gewenste macro's toewijzen, en dan zou het moeten werken. Succes er mee !

fra.
 
Goedemorgen allen,

Ik wil even terugkomen op de vraag van de Database.
Hiervoor heb je absoluut geen macro nodig.

Ga naar:
invoegen => Naam => Defnieren
Bij namen in werkmap typ je dan: 'Database'
en bij verwijst naar zet je volgende formule:

=VERSCHUIVING($A$1;0;0;AANTALARG($A:$A);AANTALARG($1:$1))

Luc
 
Wel / Niet

Hallo allemaal;

Ten eerste Luc;
Ik weet wel dat je met invoegen => Naam => Defnieren
en database typen de database bepaald (zonder verschuiving)
Maar een macro is ervoor om terugkerende handelingen te versnellen en makkelijker te maken.

Hallo Fra;
Ik ben een heel eind,
Ik heb je wijzigingen doorgevoerd en dan werkt dit prima - tabblad erbij als je in het blad zit met de macro's.

Ik heb wel een nieuwe knop gemaakt want knop "Schuur" houdt wijzigingen NIET vast????
"Programma code weergeven" wil ook niet.

Maar deze knop krijg ik ook niet weg??? weggooien helpt niet (bij opstarten zit hij er weer.
Waar moet ik zoeken om deze te verwijderen

En nog een vraagje;
Zou je de macro in tabblad "begroot" kunnen omzetten in een macro in VBA, dan kan het tabblad "begroot"ook weg.


mvg Imod
 
nog een aanvulling

Ik heb een excel bestand als standaard.(A)
Dit bestand sla ik op met opslaan als.(B)

De macro's moeten dan gecopieerd worden naar het nieuwe bestand(B)
Als je de menu knoppen dan aanroept (B) dan moeten de macro's van de nieuwe map (B) worden aangeroepen.
Er moet niet gezocht worden naar het standaard bestand.(A)

Ik heb het idee dat dit wel gebeurd.

mvg Imod
 
Geplaatst door Imod
Ik heb wel een nieuwe knop gemaakt want knop "Schuur" houdt wijzigingen NIET vast????
"Programma code weergeven" wil ook niet.
Het is mij niet duidelijk wat je bedoelt met "houdt wijzigingen niet vast". Welke wijzigingen bedoel je? Een knop is bedoeld om een opdracht (macro) te laten uitvoeren, niet om "iets vast te houden".
Geplaatst door Imod
Maar deze knop krijg ik ook niet weg??? weggooien helpt niet (bij opstarten zit hij er weer.
Waar moet ik zoeken om deze te verwijderen
Kijk of je een bestand Personal.xls of Persnlk.xls in de map XLstart hebt staan en kijk ook of een invoegtoepassing is ingeschakeld die daarop betrekking kan hebben. Hóe heb je trouwens de knop "weggegooid"?
Geplaatst door Imod
Zou je de macro in tabblad "begroot" kunnen omzetten in een macro in VBA, dan kan het tabblad "begroot" ook weg.
Dan moet je eerst eens precies uitleggen wat die macro moet doen.
Geplaatst door Imod
Ik heb een excel bestand als standaard.(A) Dit bestand sla ik op met opslaan als.(B)
De macro's moeten dan gecopieerd worden naar het nieuwe bestand(B)
Als je de menu knoppen dan aanroept (B) dan moeten de macro's van de nieuwe map (B) worden aangeroepen.
Om de macro's in een ander bestand te laten werken moet je ze ofwel opslaan in Personal.xls ofwel moet je het bestand waarin je de macro's hebt gemaakt opslaan als invoegtoepassing (die kun je dan via het menu Extra-Invoegtoepassingen activeren). Als de macro's ook op andere computers dan de jouwe moeten worden gebruikt verdient het laatste de voorkeur. De macro's worden niet gekopieerd, die blijven in Personal.xls of in de invoegtoepassing, maar zijn daar voor alle Excelbestanden beschikbaar en ze blijven verbonden aan de knoppen waaraan ze zijn toegewezen.
Op je reactie kan ik pas vanavond laat of morgenvroeg antwoorden.

fra.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan