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

voorwaarden bij wissen sheet

Status
Niet open voor verdere reacties.

monkey1601

Gebruiker
Lid geworden
1 feb 2011
Berichten
29
hallo helpers

Ik heb een bestand met een knop die een formulier opent voor toevoeging nw sheet en verwijderen sheet.
Toevoegen van een sheet gaat goed.

Het verwijderen van een bestaande sheet zou nog wat verbeterd kunnen worden door enkele controle's
  1. als verkeerde naam wordt ingegeven of een bestaande naam(wel/niet met hoofdletter) ; sheet bestaat niet
  2. Als de naam wel bestaat (hoofdletter gevoelig)nogmaals een bevestiging of ik sheet wel wil wissen


nu gebruikte code voor verwijderen sheet
Code:
Private Sub Cmd_delete_Click()
 'Eerst de ingevoerde Sheetnaam ophalen.
   sh = txtdelWorksheet
  'Als er niets in staat, gaat het niet.
 If Trim(sh) = vbNullString Then
    MsgBox "Geen Naam voor de Sheet ingevoerd"
    Exit Sub
End If
 Sheets(sh).Select
 Sheets(sh).Delete
 Unload Me
End Sub


Mijn vba is Niet zo goed en bovenstaande code heb ik door mbv van dit dit forum voor elkaar gekregen. Het aanpassen waarbij de 2 punten eerder genoemd tot uitvoering te brengen lukt mij niet.
 
Laatst bewerkt:
Bedoel je dit?

Code:
Private Sub Cmd_delete_Click()
 'Eerst de ingevoerde Sheetnaam ophalen.
sh = txtdelWorksheet
  'Als er niets in staat, gaat het niet.
 If Trim(sh) = vbNullString Then
    MsgBox "Geen Naam voor de Sheet ingevoerd"
    Exit Sub
End If
For Each Sht In ThisWorkbook.Sheets
    c01 = c01 & "|" & UCase(Sht.Name)
Next
If InStr(c01, UCase(sh)) = 0 Then
    MsgBox "Opgegeven sheet bestaat niet."
    Exit Sub
End If
ans = MsgBox("Weet u zeker dat u sheet " & sh & " wilt verwijderen.", vbYesNo)
If ans = vbYes Then
    Application.DisplayAlerts = False
    Sheets(sh).Delete
    Application.DisplayAlerts = True
 End If
Unload Me
End Sub

Niels
 
Niels,

Het werkt nog niet helemaal goed.

Als ik een deel van de naam van een sheet intyp dan komt de vraag of ik de sheet wil wissen.
Als ja dan volgt foutmelding

De ingevoerde tekst moet exact gelijk zijn aan de naam van de sheet.
Niet eerder mag de sheet gewist worden
 
Test deze eens
Code:
Private Sub Cmd_delete_Click()
Dim ShtNames() As Variant, MatchCase As Boolean, C As String
    If Trim(txtdelWorksheet) = vbNullString Then 'Als er niets in staat, gaat het niet.
        MsgBox "Geen Naam voor het werkblad ingevoerd"
        Exit Sub
    End If
    ReDim ShtNames(1 To Sheets.Count) 'Ophalen bladnamen
    For i = 1 To Sheets.Count
        ShtNames(i) = Sheets(i).Name
    Next i
    MatchCase = True 'hoofdlettergevoelig
    C = Chr$(1)
    If InStr(1, C & Join(ShtNames, C) & C, C & txtdelWorksheet & C, 1 + MatchCase) = 0 Then 'zoeken
        MsgBox "Opgegeven sheet bestaat niet."
        Exit Sub
    End If
    If MsgBox("Weet u zeker dat u werkblad " & txtdelWorksheet & " wilt verwijderen.", vbYesNo) = vbNo Then
        Exit Sub
    Else
        Application.DisplayAlerts = False
        Sheets(txtdelWorksheet).Delete
        Application.DisplayAlerts = True
    End If
    Unload Me
End Sub
 
en zo?

Code:
Private Sub Cmd_delete_Click()
 'Eerst de ingevoerde Sheetnaam ophalen.
sh = txtdelWorksheet
  'Als er niets in staat, gaat het niet.
 If Trim(sh) = vbNullString Then
    MsgBox "Geen Naam voor de Sheet ingevoerd"
    Exit Sub
End If
 
For Each Sht In ThisWorkbook.Sheets
    C01 = C01 & "|" & UCase(Sht.Name)
Next
  C01 = C01 & "|"
If InStr(C01, "|" & UCase(sh) & "|") = 0 Then
    MsgBox "Opgegeven sheet bestaat niet."
    Exit Sub
End If
ans = MsgBox("Weet u zeker dat u sheet " & sh & " wilt verwijderen.", vbYesNo)
If ans = vbYes Then
    Application.DisplayAlerts = False
    Sheets(sh).Delete
    Application.DisplayAlerts = True
 End If
Unload Me
End Sub

Niels
 
:D
Rudi,

Bedankt voor je bericht en voor het meedenken :
Ik heb je script gekopieerd. Eerst heb ik een sheet aangemaakt met de naam "test" .Daarna proberen te wissen mbv het script die je opgegeven had. ik heb natuurlijk diverse variaties uitgeprobeerd (Test,Tekst..) en inderdaad werd de tekst "Opgegeven sheet bestaat niet" getoond
Vervolgen "test" ingegeven. Er werd de melding weergegeven "Weet u zeker dat u werkblad test wilt verwijderen . Nadat ik bevestig dmv ja werdt er een foutmelding weergegeven
"foutmelding001.jpg en foutmelding002.jpg.

Daarna de :
Code:
sh = txtdelWorksheet
bovenin het script toegevoegd en overal waar "txtdelWorksheet" stond vervangen door "sh" . Vervolgens Userform opnieuw uitgeprobeerd zoals boven beschreven. Nu werkt het script wel.
(waarom nu wel?)

nogmaals hartelijk dank.


:d
Niels,

Alvast weer bedankt voor het meedenken en voor je gestuurde bericht
Ik heb natuurlijk ook jouw script geprobeerd.
Deze werkt ook , alleen als ik een sheet heb aangemaakt bv "Test" en ik geef bij de naam in het veld voor de te verwijderen sheet "test" ,dan wordt de sheet "Test" ook gewist. Dit is niet de bedoeling. Alleen dus als de tekst "exact"is mag de sheet gewist worden.
Ik gebruik nu de aangepaste code die Rudi gestuurd heeft.
Nogmaals bedankt

Monique
 
Code:
Sheets(CStr(txtdelWorksheet)).Delete
Deze wijziging is voldoende. Gebruik geen variabelen indien niet nodig.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan