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

Denk dat ik op een onjuiste wijze vraag heb gesteld

Status
Niet open voor verdere reacties.

emul

Gebruiker
Lid geworden
4 jun 2008
Berichten
17
Ik denk dat ik op een onjuiste manier twee vragen op forum heb gezet, mijn excuses daarvoor.

Ik heb aanvullende vragen gesteld op een reeds afgesloten vraag van van forumlid "deheugden" m.b.t. tabbladnaam wijzigen naar celwaarde. Dit constateerde ik helaas na verzending van bericht.

Het gaat om de het bericht voor deze post.

Ik hoop dat een van u toch bereidt is om mijn vragen te beantwoorden.

Alvast bedankt.
 
Vraag1
Is het ook mogelijk om het wijzigen de naam van tabblad 1 te koppelen aan een celwaarde uit een ander tabblad, waarbij tabblad naam begint met het woord "Week" gevolgt door het weeknummer welke dus in kolom a1 op tabblad 2 wordt ingegeven?

Dus als ik in kolom a1 van tabblad 2 (met een willekeurige andere naam) bijv. 21 in geef, zou naam tabblad 1 moeten veranderen in Week 21.

Vraag2
Kan de opgegeven macro misschien zo gewijzigd worden dat die altijd wordt uitgevoerd was cel b3 wordt gewijzigd door een doorverwijziging uit een cel uit een van de andere tabbladen dan tabblad 1?

Toelichtingen:
Bij vraag 1 doel ik op een macro die alleen wordt uitgevoerd als een celwaarde van een van te voren vaststaande (ander)tabblad wijzigt.
Bij vraag 2 doel ik op een aan macro die wordt uitgevoerd na een doorverwijzing uit een willekeurige niet van te voren vaststaande celwaarde uit wat voor tabblad dan ook, waarbij doorverwijzig mag wijzigen zonder dat macro hoeft te worden aangepast.

Plaats volgende code in Blad1

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("B3").Value <> "" Then
    ActiveSheet.Name = "Week" & " " & Range("B3").Value
End If
End Sub
Plaats nu een verwijzing in B3 naar een cel met geldige waarde op een ander blad.
Hiermee zijn je beide vragen beantwoord denk ik

Mvg

Rudi
 
Laatst bewerkt:
Beste Rudi,

Allereerst vriendelijk bedankt voor uw snelle reactie.

De tekst "Week" wordt nu inderdaad voor het weeknummer gezet in bladnaam, maar bladnaam wijzigt jammer genoeg nog niet, wanneer waarde van b3 wijzigt nadat die is gekoppeld aan cel a1 van blad2 en ik cel a1 een andere waarde geef.

Volledigheids halve meld ik dat de waarde van b3 in blad1 uiteraard zelf wel wijzigt.

Als ik waarde b3 laat wijzigen, na koppeling en verandering van waarde cella1 van het zelfde tabblad (blad1), dan wordt bladnaam wel gewijzigd.

Helaas is mijn probleem derhalve nog niet opgelost. Werkt macro bij u wel correct?

Heeft het probleem niet te maken met het argument ActiveSheet.Name?.
Op moment dat ik de waarde van cel a1 op tabblad 2 wijzig, is tabblad1 feitelijk niet actief, ook al wijzigt waarde van cel b1 wel, of heeft dat er niets mee te maken?
 
Laatst bewerkt:
Kleine bedenking: waarom een celverwijzing naar een ander blad?
Aangezien de waarde om de naam te bepalen veranderd moet worden op een ander blad, waarom dan niet de naam van Blad1 rechtstreeks wijzigen vanop dat andere blad?
Zet hiervoor bovenstaande code in desbetreffende blad en wijzig ActiveSheet.Name in Sheets(1).Name
Pas de doelcel eventueel aan en bladnaam wijzigt zoals gevraagd.

Mvg

Rudi
 
Beste Rudi,

De reden daarvoor is dat ik blad 1 als een soort compete database gebruik, met daarin gegevens uit verschillende andere werkbladen. Blad1 heb ik beveilig zodat daar niets in gemuteerd mag worden.

In tabblad 2, staan de eerste variabelen die ingegeven dienen te worden, vandaar dat ik in blad 2 het week nummer wil ingeven.

Ik heb overigens nog verder gezocht op dit forum en kwam volgende post tegen.
http://www.helpmij.nl/forum/showthread.php?t=290936

Halverwege die post geeft de heer WinteE min of meer aan dat het wel mogelijk is, alleen krijg ik het niet werkend. Ik heb uw code als volgt gewijzigd

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("b3").Value <> "" Then
Worksheets(1).Name = "Week" & " " & Worksheets(2).Range("A1").Value
End If
End Sub

en ik uitgeprobeerd:
Private Sub Worksheet_Change(ByVal Target As Range)
If Worksheets(2).Range("a1").Value <> "" Then
Worksheets(1).Name = "Week" & " " & Worksheets(2).Range("A1").Value
End If
End Sub


Ik wilde u net gaan vragen of u misschien enig idee had wat ik nog zou kunnen uitproberen, voordat ik zelf nog iets wilde testen.

En met laatste test is mijn probleem opgelost.

Het probleem is opgelost door mijn laatst opgegeven code in blad 2 te zetten ipv blad 1.

Ik dank u overigens dat u de steeds weer de moeite hebt genomen mijn post door te nemen om mijn probleem op te lossen.

Zonder u en het helpmij forum, was het mij nooit geluk. ik hebt nl. geen vba kennis om zelf codes te maken, al begrijp ik de codes die u aandraagt wel enigsinds.

Nogmaals dank:thumb:
 
Beste emul
Misschien hier niet onmiddelijk van toepassing omdat dit een simpele code betreft, maar wil je deze methode met een meer uitgebreide code gebruiken zet dan onderstaande regel bovenaan in je code. Hij zorgt ervoor dat de code enkel uitgevoerd wordt bij wijziging van die betreffende cel en niet telkenmale je iets wijzigt in een willekeurige cel in je blad.
Code:
If Target.Address <> "$A$1" Then Exit Sub

Mvg

Rudi
 
Beste Rudi,

Dank voor uw aanvullende opmerking.

Uit aanvullende regel maak ik op dat vba code stopt als er een cel wordt gemuteerd welke niet cel a1 is.

Is het dan zo dat als die regel er niet bij staat, excel bij elke wijziging, dus ook als niet a1 wordt gewijzigd, altijd de gehele vba code in het werkblad doorloopt?

Het is inderdaad een korte code, welke waarschijnlijk in een mum van tijd wordt doorlopen, maar voor de snelheid zou ik dus eigelijk altijd die aanvullde regel ervoor moeten zetten.

Ik zal de extra regel in opnemen in de code.

Met vriendelijk groet,

Frank
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan