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

deel van code werkt soms niet

Status
Niet open voor verdere reacties.

bjornesto

Gebruiker
Lid geworden
16 apr 2012
Berichten
201
Ik heb een bestand waarin ik verscheidene buttons verwerkt heb

Deze werken perfect maar onderstaande deel in een andere kleur wil excel niet altijd uitvoeren

Nu heb ik onderstaande code gemaakt

Code:
Private Sub CommandButton15_Click()
CommandButton15.Caption = [A16]
  On Error Resume Next
  Workbooks("2) 1st floor.xlsm").Activate
  If Err.Number > 0 Then Workbooks.Open "c:\documents\downloads\2) 1st floor.xlsm"
    With Sheets("1st floor").Activate
[COLOR="#FFA07A"]         Call Sheets("1st floor").CommandButton2_Click[/COLOR]         ActiveSheet.Shapes.Range(Array("Rectangle 381")).Select
            Macro7
            zoom
  End With
  End Sub
 
Zonder de code te kennen die onder commandbutton2_click staat, blijft het een beetje raden wat er fout gaat.

Wat er alvast gezegd kan worden, is dat event macro's reageren op een gebeurtenis en niet bedoelt zijn om op te roepen.

In dit geval zou je bijvoorbeeld de macro die onder de click event staat, apart in een module kunnen zetten.
Vervolgens roep je deze aan vanuit de click event en de macro die je hier geplaatst hebt.

mvg Leo
 
Laatst bewerkt:
dit is de code die onder commandbutton2 click staat

Code:
Private Sub CommandButton2_Click()
Dim Findwhat As String
On Error Resume Next
  For Each tb In ActiveSheet.Shapes
   If tb.AutoShapeType = msoShapeRectangle Then
         With tb.TextFrame.Characters.Font
           .Name = "Arial"
           .Size = 6
           .Underline = xlUnderlineStyleNone
           .Bold = False
         End With
            tb.Fill.ForeColor.RGB = RGB(255, 255, 255)
      End If
    Next
End Sub

wat wel raar is, is dat de code bij een bepaalde sheet werkt en de rest niet.
 
De coderegel wordt ten allen tijde uitgevoerd. Ook als "1st floor.xlsm" niet geopend is.
Is dit wel de bedoeling?

Met vriendelijke groet,


Roncancio
 
Het is eigelijk een bestand om bepaalde dingen te markeren zodat het vlugger te vinden is.

In die file zit er meer dan een reset knop alleen

Er is een knop search die zoekt in alle tekstboxen en dan een gele achtergrond geeft als hij die waarde (maar kan ook deel van een waarde zijn zowel cijfers als letters zoekt hij hiermee)

Ik heb ook een menu knop erin gezet zodat ze vlug van een plan naar een lijst kunnen en terug.
Dan heb ik ook nog die knop reset op elke sheet gezet. Ieder command button heeft op elk blad als reset de naam command button 2

Nu is het de bedoeling van als ik op een tabblad van (voorbeeld: lijst plan 1st floor klikt --> naam van de sheet, dan zijn er command buttons op iedere rij gezet die ingevuld is in die lijst.) Deze knoppen verwijzen dan naar een code op het plan. (zie eerste code in oorspronkelijk bericht)

Ik klik dan op die knop en dan gaat hij naar dat plan. Aangezien het soms verkeerd wordt opgeslagen en ik telkens maar 1 melder wil zien, zou ik dat zo willen programmeren dat hij telkens als hij naar dat plan gaat hij op die reset knop klikt van dat plan omdat die reset button alleen maar werkt op het actieve werkblad. Zodoende dat als er nog iets in het geel staat hij dit eerst verwijderd alvorens hij de juiste code aangeeft.

Het komt er dus op neer dat ik wil dat er telkens maar 1 tekstbox in een gele achtergrondkleur komt en geen 20 die al eerst een gele achtergrond hadden er nog eentje bijkomt.
 
In plaats van code voor het resetten op elk werkblad te zetten is het beter om de code op een centrale plaats te zetten zodat je ernaar kan verwijzen.
Daarbij zou je ook bij het opstarten van een werkblad automatisch laten resetten.

Een simpel voorbeeld:

Onderstaande code behoort in ThisWorkbook en geldt dan voor alle werkbladen.

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
MsgBox "We gaan resetten!"
End Sub
Wat gebeurt er? Bij het selecteren van een ander werkblad dan het huidige verschijnt automatisch het bericht: "We gaan resetten!"
In plaats van het bericht zouden we dus code kunnen toevoegen zodat de tekstvelden op het betreffende werkblad automatisch hun gele kleur kwijtraken.
Indien nodig zouden we ook een uitzondering kunnen maken voor bepaalde werkbladen.

Zo heb je veel minder code nodig die je bovendien dan ook makkelijker kunt beheren.

Met vriendelijke groet,


Roncancio
 
Dit was eigelijk mijn intentie om dit in this workbook te zetten maar ben nog volop aan het leren met vba dus heb ik er even rond gewerkt.
Ik heb dit ook geprobeerd met zoals je zei van bepaalde onderdelen in een module (zie zoom en macro7) te zetten maar dan met with verwacht hij een expressie dus heb ik dat zo opgelost in de code helemaal bovenaan en dan gaf hij die fout niet.

Dat is inderdaad veel beter.

Maar ik vind het raar dat die code in een file het wel perfect doet (dus die command button 2 klikt en op andere sheets niet.)
Doe ik een andere file open zelfde structuur wel andere lijsten en plannen, dan weigert hij command button 2 te klikken maar de rest voert hij wel uit van die code. Hij slaat gewoon die regel over.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan