Meerdere Auto_Open

Status
Niet open voor verdere reacties.

JoostHoeve

Gebruiker
Lid geworden
21 okt 2010
Berichten
17
Beste forumgenoten,

Ik zit met de volgende kwestie. In de bijlage heb ik een bestand die dit hopelijk helpt verduidelijken. Ik werk bij een bedrijf die twee merken bezit. Wij zijn bezig met een dashboard te ontwerpen hiervoor. Als je het bestand opent krijg je op de eerste pagina een banner te zien met de laatste nieuwsupdates (Deze banner opent d.m.v. Auto_Open). Echter, de volgende twee pagina's zijn voor de twee merken, dus daar wil ik een banner met merkafhankelijke nieuwupdates. Mijn vragen zijn;

1. Is er een soort van Auto_Open, maar dan voor een enkele tabblad als die geopend word? Alle tabbladen zijn namelijk verborgen en worden opgeroepen d.m.v. een macro.

2. Anders, als nummer 1 niet kan, wil ik graag op de tabbladen voor de merken de banner met een knop willen bedienen. Echter als ik de banner op 1 van de merk tabbladen activeer, stopt de banner op de eerste pagina en deze gaat pas weer lopen als ik het bestand opnieuw open. Is dit te voorkomen? Dus of dat de eerste banner altijd loopt, of dat de eerste banner gaat lopen indien dat tabblad weer word geactiveerd.

3. Zoals je ziet is de banner nu alleen de tekst die ik heb ingevoerd, kan het ook zo dat de banner zichzelf vult. D.w.z. dat de tekst zichzelf kopieert zodat de desbetreffende cel altijd helemaal gevult is.


Ik heb meerdere dingen geprobeerd zoals;
1. Open_Workbook en een Auto_Open
2. If functie in de code
Etc.


Ik zou het waarderen als iemand een oplossing heeft een deel van de oplossing.

MVG,
Joost



Bekijk bijlage VB.xls
 
Uhm, gokje, Worksheet_Activate?

Ik begrijp vraag 3 niet helemaal goed. je kunt sTxt naar alles laten verwijzen wat je wil.

Ik zou ook aanraden de SLEEP functie te importeren via:

Code:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Dit belast excel en je systeem een stuk minder
 
Aha, van die functie was ik nog niet op de hoogte! Die zal ik er ook inzetten ja. Dat zal wel handig zijn met het sneller opstarten van het bestand neem ik aan! Worksheet
En Worksheet_active. Dus gewoon in VBA bij de worksheet Sub Worksheet_Active en dan de code neem ik aan? Dat zal ik maandag, als ik weer op het werk ben, proberen! Klinkt logisch. Ik had al zoiets geprobeerd in een eerder stadium, echter heb ik toen wellicht de fout gemaakt om alleen de merk tabbladen met worksheet active te doen, en dan heb je het probleem nog steeds van de auto open banner die dan niet meer loopt!! Dank u voor de tip, klinkt logisch!

M.b.t. vraag 3, zoals je nu ziet heb ik een aantal cellen samengevoegd, en daar loopt de tekst in. Echter als wil ik graag dat de gehele cel die samengevoegd is, dat die geheel gevuld is met tekst, ten allen tijden.
Wat ik daarmee ook graag wil bereiken is dat je altijd al de tekst kan zien. Ik heb nu namelijk als ik veel tekst invoer in de code, dat je niet al de tekst kan zien. Dit omdat de tekst langer in dan de cel lang is. Ideaal gezien zou de tekst links (uit het zicht) beginnen en dan naar rechts lopen en als je dan het tabblad opent, dat de tekst begint te lopen.

Bijvoorbeeld deze zin; "dit is de tekst dit ik in de cel kwijt wil, echter is de cel kleiner dan deze zin."
En bijvoorbeeld de cel is de grote van de haakjes: "[dit is de tekst die ik in de cel kwijt] wil, echter is de cel kleiner dan deze zin."
Hiermee zie je dus alleen maar "dit is de tekst die ik in de cel kwijt", en de rest van de zin krijg je niet te zien. Dit omdat de tekst naar rechts de cel uitloopt. Daarna begint de code weer opnieuw en krijg je weer alleen het eerste gedeelte van de zin te zien. Het laatste gedeelte van de zin krijg je dus nooit te zien.

Ideaal zou zijn dat de als volgt gaat (waarbij de haakjes weer de cel voorstelt);
Stage 1 (bij openen dus); "dit is de tekst dit ik in de cel kwijt wil, echter is de cel kleiner dan deze zin."[ ]
Stage 2 ; "dit is de tekst dit ik in de cel kwijt [wil, echter is de cel kleiner dan deze zin."]
Stage 3; "[dit is de tekst dit ik in de cel kwijt] wil, echter is de cel kleiner dan deze zin."
Stage 4; "dit is de tekst dit ik in de cel kwijt wil, [echter is de cel kleiner dan deze zin.]"
Etc.

Hopelijk is het zo duidelijk..
Het is namelijk inderdaad lastig uit te leggen als ik geen voorbeeld kan maken!
 
Dit is de code die ik nu op sheet2 heb, de commandbutton code kan ook onder sheet_activate. volgens mij is dit wat je zoekt

Code:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub CommandButton1_Click()
Dim sTxt As String
Dim x As Integer, y As Integer
Dim fitchar As Integer
Dim cellp As Object

sTxt = "Hier komt tekst Merk 1"
fitchar = 0

For Each cellp In [c9].MergeArea
    fitchar = fitchar + cellp.ColumnWidth
Next cellp
fitchar = fitchar / 2 '2 regels hoog


If (Len(sTxt) + 20 > fitchar) Then
    sTxt = Space(20) & sTxt & Space(20)
Else
    sTxt = Space(20) & sTxt
End If

Do

For y = 0 To 30                                              '50 Loops through the scrolling

    For x = 1 To Len(sTxt)                                         'Index number of times


        [c9] = Mid(sTxt, Len(sTxt) + 1 - x, fitchar)                       'Show 4 str @ a time
        Sleep (100)
        DoEvents                                          'do there things

    Next x                                                    'Show the next str
Sleep (700)
Next y                                                        'Do this again

[c9] = ""                                                    'sText

Loop
End Sub

Hoewel ik wel denk dat nu de text de verkeerde kant op loopt voor wat je wil. maar dat kun je makkelijk ondervangen door de mistring gewoon op X te laten lopen
 
Laatst bewerkt:
Dat is niet op lossing die ik zocht jammer genoeg! Als ik de code met Auto_Open doe dan werkt de code wel. Echter blijft de tekst als een gek heen en weer sprinten en is niet leesbaar. Ook als ik meerder cellen samenvoeg blijft dit zo.
De code met Worksheet_Active wil niet lukken jammer genoeg.

Ik heb de code twee maal in het bestand gedaan, 1 maal met worksheet_active in cel A1. En 1 maal met Auto_Open in cel A4. Zoals je kunt zien werkt de code alleen in cel A4, auto open dus.

Iemand suggesties?
 

Bijlagen

Excusses,

De code klopt wel. Echter wordt deze pas geactiveerd als je het tabblad zichtbaar maakt als die onzichtbaar is geweest. Als je het bestand opent helpt de Worksheet_Active code jammer genoeg niet. Dit minpunt heb ik teniet gedaan door een Auto_Open te doen op dezelfde plek met dezelfde banner. Dit betekend dat de Auto_Open code actief is indien je het bestand opent en de Worksheet_Active als je weer terug keert naar de eerste pagina. Wellicht niet de mooiste oplossing, maar het werkt wel.

Ehcter is de vraag van de doorlopende banner als het ware nog niet geheel duidelijk. Als iemand hier een oplossing voor heeft, of mij kan aangeven of iets verkeerd heb gedaan met de code van Wampier dan zou ik dat zeer waarderen! Voor een betere uitleg; zie hierboven!

MVG,
Joost
 
worksheet_Activate() niet active ;)

en je hebt de Sleep functie weggehaald? daarom gaat het veel te hard

*edit* mijn originele code gaat uit van een grote cel met hoogte 2.

Merge in je voorbeeld a1 tm m2 en run de macro nogmaals
 
Laatst bewerkt:
mijn versie geupload, zonder code 2 maal te dupliceren.

Sorry voor 2 maal reply van mij onder elkaar, maar om een of andere reden kreeg ik de bijlage niet aan de edit gehecht
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan