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

Nieuwe sheet, alfabetisch tussen andere sheets zetten.

  • Onderwerp starter Onderwerp starter bgoo
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

bgoo

Gebruiker
Lid geworden
9 mrt 2011
Berichten
61
Hallo,

Ik heb in een bestand een aantal Sheets, deze zijn op alfabetische volgorde.
Ik heb een macro om een nieuwe sheet te maken met een bepaalde naam.

Ik heb onderstaande formule om alle sheets te alfabetiseren, maar om dit elke keer na het maken van een sheet te doen is minder prettig. Het scherm gaat namelijk knipperen omdat hij veel sheets alfabetiseert.

Code:
Dim i As Integer
Dim y As Integer
Dim X As Integer
Dim mySheet As Object
Dim SheetName As String
i = Sheets.Count


For y = 1 To i
Set mySheet = Sheets(y)
SheetName = mySheet.name
For X = y To i
If SheetName > Sheets(X).name Then
SheetName = Sheets(X).name
End If
Next
Sheets(SheetName).Move Before:=Sheets(y)
Next

Is er een mogelijkheid om alleen de nieuwe sheet (op aanmaak) op de juiste alfabetische plek tussen de andere sheets te zetten? Of is er een manier van alfabetiseren dat hij tijdens het alfabetiseren op een bepaalde sheet blijft staan tot hij klaar is?

Dank!
 
Laatst bewerkt:
Om het knipperen tegen te gaan zet bovenaan in je macro

Code:
Application.screenupdating = false

onder aan in je macro

Code:
Application.screenupdating = true

Niels
 
blad verplaatsen op volgorde, let op net als bij jouw macro is een hoofdletter altijd kleine dan een kleine letter.
Dus alles met een hoofdletter komt voor de kleine letters.

Code:
Sub Macro1()
For i = 1 To Sheets.Count
If ActiveSheet.Name < Sheets(i).Name Then
ActiveSheet.Move Before:=Sheets(i)
Exit For
End If
Next
End Sub

zo maakt een hoofdletter niks meer uit.

Code:
Sub Macro1()
For i = 1 To Sheets.Count
If UCase(ActiveSheet.Name) < UCase(Sheets(i).Name) Then
ActiveSheet.Move Before:=Sheets(i)
Exit For
End If
Next
End Sub


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