• 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.

Hoe zwaar is de camerafunctie van Excel?

Status
Niet open voor verdere reacties.

grietsenwijma

Gebruiker
Lid geworden
25 jun 2013
Berichten
241
Ik heb net de camera functie van Excel ontdekt.

Een verrassende, bijzonder leuke en nuttige functie.

Ik zit er over te denken om dit te integreren in een nieuw te bouwen programma waar dat een hele mooie functie kn vervullen.
De invulling die mij voorstaat brengt met zich mee dat er zo'n 100-150 van deze venstertjes op één tabblad actief moeten worden.
Ik vraag me af of dit niet makkelijk over de grenzen gaat van wat Excel of een gemiddeld werkstation aankan.
Ik heb uiteraard geen zin om er bij venster 88 achter te komen waar de grens ligt.

Heeft iemand hier ervaring mee? Of de kennis om hier een gefundeerde verwachting over te geven?

Zie ook het zeer rudimentaire voorbeeldje in de bijlage

Alvast dank!
 

Bijlagen

Laatst bewerkt:
Geef eens aan in een voorbeeldbestand hoe je het wil gebruiken.
 
Met de hand gemaakt ?
Ga je dat ook bij een 100-tal doen ?
Welke gebruiker heeft >100 beelden nodig om zijn/haar taak uit te voeren ?
Ik vind je informatie wel erg summier.
 
Laatst bewerkt:
Inderdaad, is wel erg veel

Voorbeeld is summier, maar er zijn inderdaad >100 posten waarbij je dan in het venstertje kunt zien wat je keuzes (meestal tekstueel) veroorzaken op een ander tabblad.

In het venstertje komt dan de resulterende tekst in beeld. Afhankelijk van de post kan dat 2 tot 20 regels zijn.

Mijn vraag is dus of ik met zo'n toepassing in 100-voud wel of niet Excel of het gemiddelde werkstation ga overbelasten.
 
Laatst bewerkt:
Dan heb je aan 1 'camerabeeld' toch genoeg ?
Afhankelijk van waar een wijziging wordt doorgevoerd kan een 'camerabeeld' aangemaakt/getoond worden: workbook_selectionchange()
 
Die optie en de mogelijkheden daarvan is mij volslagen onbekend.
Ik heb wel even wat rondgegoogled maar kwam niet een toepassing tegen die bij mijn plannen past. Heb je daar een voorbeeldje van?
 
Laatst bewerkt door een moderator:
Ziet er heel leuk en veelbelovend uit:thumb:

Ik moet hier even een poosje mee experimenteren om te zien wat mogelijk is.

...maar ik zie dat je de extensie hebt veranderd naar xlsb
Ik doe tot nu toe alles in xlsm

Geeft dat geen gedoe in de zin van andere beperkingen?
 
xlsb geeft de minste beperkingen, is het snelst en het kleinst.
Ieder Excelbestand wordt bij mij automatisch opgeslagen als xlsb(inair) bestand.
 
Ok, ik kende dat nog niet
Wordt dan idd wel een stuk kleiner.
Ik ga er even een poosje mee experimenteren, en als dat goed lijkt hier uitrollen.

Was niet mijn vraag, maar wel een interessant antwoord :)

Bedankt!
 

Ik ben al even met je voorbeeldje aan het experimenteren geweest.
Ik zie hier een voor mijn toepassing heel mooi hulpmiddel in!

Maar ik mis nog wel een stukje

Als ik een 3e tabel maak en ik breid de code daar mee uit wordt er niks mee gedaan.
Waar ga ik in de fout? Oftewel: wat is de truck?

Vast dank!
 

Bijlagen

als je een mooie verwijzing kan maken, dan kan je vlot je 100 camerastandpunten via 1 camera tonen.
In I1 kies je een getal tussen 1 en 99.
Voorlopig verwijzen 1 tot 10 naar de bereiken in kolom A van blad2 (dat zijn er maar 5), 11 tot 20 naar de bereiken in kolom G
Dus als je 1 en anders mooi verknoopt, kan je alles doen, desnoods je gegevens uit meerdere bladen halen.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
     'Dim c     As Range
     With Target
          If .Address <> "$I$1" Then Exit Sub

          On Error Resume Next
          Select Case .Value
               Case "", 0: Exit Sub
               Case 1 To 10: i0 = 1: Set c = Sheets("blad2").Columns("A").SpecialCells(xlConstants)     'cellen met vaste inhoud in kolom A van blad2
               Case 11 To 19: i0 = 11: Set c = Sheets("blad2").Columns("G").SpecialCells(xlConstants)     'cellen met vaste inhoud in kolom A van blad2
          End Select
          On Error GoTo 0
          If c Is Nothing Then Exit Sub     'geen dergelijke cellen = stoppen !
          i = c.Areas.Count     'aantal blokken met gegevens
          If WorksheetFunction.Median(i0, i0 + i - 1, .Value) = .Value Then 'gevraagd camerastandpunt, bestaat die ?
               Sheet1.Shapes(1).OLEFormat.Object.Formula = "=blad2!" & c.Areas(.Value - i0 + 1).Resize(, 2).Address
          Else
               MsgBox "er zijn maar " & i & " camerastandpunten", vbExclamation
          End If
     End With
End Sub
 

Bijlagen

Laatst bewerkt:
Beetje lisdectisch geloof ik :P

bedankt voor het wakker maken!
 
Laatst bewerkt door een moderator:
als je een mooie verwijzing kan maken, dan kan je vlot je 100 camerastandpunten via 1 camera tonen.
In I1 kies je een getal tussen 1 en 99.
Voorlopig verwijzen 1 tot 10 naar de bereiken in kolom A van blad2 (dat zijn er maar 5), 11 tot 20 naar de bereiken in kolom G
Dus als je 1 en anders mooi verknoopt, kan je alles doen, desnoods je gegevens uit meerdere bladen halen.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
     'Dim c     As Range
     With Target
          If .Address <> "$I$1" Then Exit Sub

          On Error Resume Next
          Select Case .Value
               Case "", 0: Exit Sub
               Case 1 To 10: i0 = 1: Set c = Sheets("blad2").Columns("A").SpecialCells(xlConstants)     'cellen met vaste inhoud in kolom A van blad2
               Case 11 To 19: i0 = 11: Set c = Sheets("blad2").Columns("G").SpecialCells(xlConstants)     'cellen met vaste inhoud in kolom A van blad2
          End Select
          On Error GoTo 0
          If c Is Nothing Then Exit Sub     'geen dergelijke cellen = stoppen !
          i = c.Areas.Count     'aantal blokken met gegevens
          If WorksheetFunction.Median(i0, i0 + i - 1, .Value) = .Value Then 'gevraagd camerastandpunt, bestaat die ?
               Sheet1.Shapes(1).OLEFormat.Object.Formula = "=blad2!" & c.Areas(.Value - i0 + 1).Resize(, 2).Address
          Else
               MsgBox "er zijn maar " & i & " camerastandpunten", vbExclamation
          End If
     End With
End Sub

Lijkt mij een hele mooie oplossing met een betrekkelijk simpele code (hoewel ik hem zelf niet zou kunnen bedenken)
De code van SNB is nog een heel stuk simpeler, maar voor elk camerastandpunt gaan daar een paar regels bij komen wat bij 100+ standpunten in een hele waslijst gaat ontaarden.

Het mooie van de code van SNB vind ik wel dat het bijbehorende camerastandpunt automatisch oppopt als je ergens je cursor neerzet. Dat doet heel wat met het gebruikersgemak. Zou dat met een aanpassing aan deze code ook zijn te bereiken? ....of moeten we dat dan maar rekenen onder ongemak waarmee we moeten leren leven?

Suggesties welkom!
 
alles is te maken,
veronderstel dat je een tabel maakt met in de 1e kolom je naam voor je camerastandpunt, in de 2e en 3e kolom respektievelijk het werkblad en het bereik voor dat standpunt.
Dan maak je een keuzelijst of iets dergelijk en dan hoef je maar te kiezen.
Moeilijkste punt is die tabel maken, dus het werk zit bij jou, de rest is peanuts.
 
Mijn werklust is legendarisch, maar aan kennis schort het nogal eens :rolleyes:

Het blad waarin we werken is (in het huidige ontwerp dat ik wil gaan vernieuwen) zo'n 2300 regels groot
Voor iedere regel zou dus moeten worden aangegeven wat het camerastandpunt moet zijn (klinkt trouwens spannender dan het is, want dat is vaak tig regels hetzelfde.)

Maar kort samengevat zou ik de truck werkend kunnen krijgen met als basis een werkblad waarvan de 1e 3 kolommen zijn ingericht als tabel met daarin deze informatie.

Heb ik het zo goed samengevat?
 
Laatst bewerkt door een moderator:
Als je een goede gegevensstruktuur maakt zijn 2 regels voor 100+ gebieden voldoende:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.ListObject Is Nothing Or Target.Count > 1 Then Exit Sub
    
    Sheet1.Shapes(1).OLEFormat.Object.Formula = "=Blad2!" & Sheet2.Columns(1).SpecialCells(2).Areas(Right(Target.ListObject, 1)).CurrentRegion.Address
End Sub
 
Die code ziet er verbluffend eenvoudig uit voor alles wat ie moet doen.
En eenvoud is meestal ook een teken van degelijkheid en "rekenlichtheid"
....maar in al zijn eenvoud is het wel een paar stapjes boven mijn kennisniveau.
Zou je dit ook in een voorbeeld kunnen gieten (of een van de eerder gepasseede voorbeelden hierop aanpassen?)

Mijn ervaring is dat als een code boven je kennisniveau zit het veel makkelijker is een bestaand werkend voorbeeld aan te passen naar je eigen situatie dan te proberen het te begrijpen. (met geduld, try&error kom je dan vaak een heel eind :P)
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan