Command button verstoppen in excell na het opslaan van sheet.

Status
Niet open voor verdere reacties.

Shadowx85

Gebruiker
Lid geworden
26 jan 2016
Berichten
25
HEREN,

Ik heb in de eerste 4 rijen button's zitten waaronder ook een save as button daarmee sla ik de sheets op in een aparte excel bestand maar dan neemt hij gelijk ook het hele rij met buttons mee en ik wil daar eigenlijk maar een deel van mee hebben. Hoe verstop ik de button of haalt ie hem uit het bestand ? ..

Code:
Sub SAVE_AS()
Dim PATH As String
Dim FILENAME1 As String
Dim FILENAME2 As String
Dim FILENAME3 As String
Dim FILENAME4 As String
Dim FILENAME5 As String
Dim FILENAME6 As String
FILENAME1 = Range("P8")
FILENAME2 = Range("Q8")
FILENAME3 = Range("I9")
FILENAME4 = Range("I13")
FILENAME5 = Range("I29")
FILENAME6 = Range("I30")
MENU.Hidden = True
MENU.Visible = False
Sheets(Array("BLAD3", "BLAD4")).Copy
ActiveWindow.Activate
With Application.FileDialog(msoFileDialogSaveAs)
    .InitialFileName = "c:\users\x\documents\"
    .FilterIndex = 1
    .InitialFileName = FILENAME1 & "-" & FILENAME2 & "-" & FILENAME3 & "-" & FILENAME4 & "-" & FILENAME5 & "-" & FILENAME6
    .Title = "Opslaan als"
    .Show
    .Execute
  End With
End Sub

Met vriendelijke groeten,

Shadowx
 
Als het buttons van de activeX-controls zijn.
Code:
blad1.commandbutton1.visible = false
 
HSV,

IK heb gewoon een standaard button gebruikt is het misschien beter om een activeX- buttons te gebruiken?
 
ActiveX is stukken beter is mijn ervaring.

Natuurlijk kan het wel, maar is veel lastiger te programmeren.
De originele naam van het object/shape, als die ooit eens is veranderd zitten er al weer haken en ogen aan.
De buttons nemen niet altijd de code mee die er aanhangt bij het uploaden naar een forum.
Zo maar een paar dingetjes.
 
Wat ik ook zie bij de meeste code staan ze verwerkt in de blad zelf en ik zit alles in een module te maken. Zit daar ook nog een verschil in? Zou je graag laten zien waar ik mee bezig ben maar het is voor een bedrijf waar ik voor werk en zit helemaal vol met logo's en belangrijke documenten bij in, en om het nu uit mekaar te trekken en een klein voorbeeld te geven pff zit ff wat tijd in.:confused:

Gaat het proberen even een klein deel ervan uit te halen. Dan begrijp je wat ik bedoel.

Sorry caps stond aan had niet goed gekeken.
 
Laatst bewerkt:
Sla het op als een proef, zodat je kunt zien welke buttons weg zijn.
Code:
Sub SAVE_AS()

Dim FILENAME1 As String
Dim sh As Worksheet
FILENAME1 = Join(Array(Range("P8"), Range("Q8"), Range("I9"), Range("I13"), Range("I29"), Range("I30")), "-")
Sheets(Array("DECLARATION ", "CHART STICKER")).Copy
ActiveWindow.Activate
With Application.FileDialog(msoFileDialogSaveAs)
    .InitialFileName = "c:\users\x\documents\"
    .FilterIndex = 1
    .InitialFileName = FILENAME1
    .Title = "Opslaan als"
    .Show
    .Execute
  End With
With ActiveWorkbook
 For Each sh In .Sheets
   If LCase(sh.Name) = "declaration " Then
      sh.Shapes.Range(Array("Button 1", "Button 3")).Delete
   Else
      sh.Shapes.Range(Array("Button 2", "Button 3")).Delete
   End If
 Next sh
End With
End Sub
 
Laatst bewerkt:
Dat van al die FILENAME variabelen zou ik zo doen:
Code:
FILENAME = Range("P8") & "-" & _
           Range("Q8") & "-" & _
           Range("I9") & "-" & _
           Range("I13") & "-" & _
           Range("I29") & "-" & _
           Range("I30")

Daarnaast heb je een PATH variabele gedeclareerd die je niet gebruikt.
Tevens is het niet aan te raden een correct Engels woord als variabele te gebruiken wegens mogelijke conflicten met reserved words in VBA.
 
Laatst bewerkt:
Dat is zeker een verbetering Ed. :thumb:
Ik heb daar niet op gelet omdat het niet mijn stukje is en omdat ik moest zoeken naar de namen van de knoppen. :rolleyes:

Een ander mogelijkheid.
Code:
FILENAME1 = Join(Array(Range("P8"), Range("Q8"), Range("I9"), Range("I13"), Range("I29"), Range("I30")), "-")

Je edit: vandaar ook maar de FILENAME met een 1 erachter.
 
Laatst bewerkt:
Jouw mogelijkheid vind ik nog netter, maar ook dat zou ik onder elkaar zetten, zoals in mijn voorbeeld. Maar da's een kwestie van smaak.
Code:
FILENAME1 = Join(Array(Range("P8"), _
                       Range("Q8"), _
                       Range("I9"), _
                       Range("I13"), _
                       Range("I29"), _
                       Range("I30")), _
                       "-")

Als je trouwens met rechts op zo'n button klikt staat de naam ervan linksboven in het naamvak.
 
Laatst bewerkt:
Je kan ze dus toch verwijderen met hun naam die in het tekstvak staat.
hmmm, mijn manier van denken was dat ik de originele naam moest hebben.

Code:
For Each shp In sh.Shapes
   MsgBox shp.Name
  Next

En dan krijg je "Button 1" ipv. "Knop 1".
 
Klopt, "Button 1" is de interne naam. Je mag ook de naam "Knop 1" uit het naamvak in de code gebruiken.
Dat is een logische naam voor de interne naam.

Zelf geef ik knoppen altijd dezelfde naam als dat ze als opschrift (Caption) hebben.
Je ziet dan in de code meteen over welke knop het gaat.
 
Laatst bewerkt:
Oké, sofar so good in goed Gronings.

Ik heb de naam 'Knop 1' veranderd in 'Knopje 1 in het tekstvak.
De code aangepast.
Code:
 sh.Shapes.Range(Array("Knopje 1", "Knop 2")).Delete

Edit: het werkt toch prima zo.
Ik meende dat ik daar al een keer eerder last van had gehad.

Even getest met een select ipv. delete.
Bedankt voor je inbreng Ed.
 
Laatst bewerkt:
Ik gebruik altijd ActiveX knoppen. Kennelijk werkt wat ik zei niet op formulier objecten.
 
Het gaat mij net zo.
Zie #4.
 
Heren,

Bedankt voor de code ik heb in 2dagen tijd veel geleerd van scripte en zeker ook hoe jullie met afkorting omgaan.

nu lukt het me al de buttons weg te krijgen behalve op de 2de sheet dus ik heb de code zo geprobeerd hij geeft geen fout aan maar werkt niet.?

Code:
Sub DECLARATION()
'
' DECLARATION Macro
'

'
    Sheets("DECLARATION ").Select
End Sub
Sub SAVE_AS()

Dim FILENAME1 As String
Dim sh As Worksheet
FILENAME1 = Join(Array(Range("P8"), Range("Q8"), Range("I9"), Range("I13"), Range("I29"), Range("I30")), "-")
Sheets(Array("DECLARATION ", "CHART STICKER")).Copy
ActiveWindow.Activate
With Application.FileDialog(msoFileDialogSaveAs)
    .InitialFileName = "c:\users\x\documents\"
    .FilterIndex = 1
    .InitialFileName = FILENAME1
    .Title = "Opslaan als"
    .Show
    .Execute
  End With
With ActiveWorkbook
 For Each sh In .Sheets
   If LCase(sh.Name) = "declaration " Then
      sh.Shapes.Range(Array("Button 1", "Button 2", "Button 3", "Button 4", "Button 5")).Delete
   End If
 Next sh
 
 If LCase(sh.Name) = "chart sticker " Then
      sh.Shapes.Range(Array("Button 1", "Button 3")).Delete
      End If
      
End With
End Sub
 
Zo op het eerste gezicht heet dat tweede sheet niet "chart sticker " maar "chart sticker", dus zonder een spatie aan de rechterkant. Het is niet handig om een spatie aan het einde van een sheetnaam te gebruiken. Doe het eens zo:
If LCase(Trim(sh.Name)) = "chart sticker" Then
 
Ts is vast in de veronderstelling geweest dat dit gebruikelijk is.
Code:
If LCase(sh.Name) = "declaration " Then
In dit bladnaam staat wel een spatie, en ik had geen zin om het te verwijderen.
 
Bij "declaration " staat die spatie inderdaad wel, "chart sticker" niet. Met die Trim functie gaat het in beide gevallen goed maar het is beter om die spatie uit de naam te verwijderen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan