2011-08-05 7 views
-2

Ok, je crée une feuille de calcul qui peut être éditée par un autre utilisateur mais verrouillée autrement. Ce que j'espère faire est de créer 3 boutons. "Que faire" "Quitter si" et "Réinitialiser"Macros Excel 2010 Amusant avec les boutons

"Que faire si" permet à l'utilisateur d'entrer des données. "Quitter si" permet à l'utilisateur de quitter le mode d'entrée et revenir à la valeur par défaut. document. Ensuite, "Reset" permettra à l'utilisateur de rester dans "What if" mais de réinitialiser toutes les valeurs par défaut.

Ensuite, je veux le bouton « si » apparaisse quelque part dans la gauche, mais lorsque vous cliquez dessus, son remplacé par « Exit » et « Reset »

+1

Quel code avez-vous à ce jour? Cela ne devrait pas être une tâche extrêmement difficile, mais cela aide à commencer quelque part. :) –

+2

@Michael: quelle est votre question? –

Répondre

1

Je vous suggère d'expliquer un peu plus vous poser des questions , mais jusqu'ici pour ce que je peux infere vous avez l'issuse suivante:

  • avoir une feuille Excel avec des formules et des données verrouillées.
  • offre modifier la page, mais pas enregistrer les modifications, comme "consulter" les données.

Je peux surtout offrir ce qui suit:

  • Créer une feuille de sauvegarde où vous votre sauvegarde la page de base
  • Déverrouillez la feuille pour le montage.
  • Si vous quittez l'édition, restaurez les données de la sauvegarde sur la feuille principale.
  • Si vous réinitialisez l'édition, suivez la même procédure que exit et déverrouillez à nouveau les données. (Pour la façon dont il a été cartographié le flux de code, la feuille copiée ses données verrouillée)

Cela se traduira par le code followin:

Sub BackUpData() 'this will be linked to you "what if" button 
    Sheets("Data_Sheet").Select 'select shhet with data, just in case 
    Range("A1:M56").Select ' range of your important data in your excel sheet 
    Cells.Select 
    Selection.Copy 
    Sheets("BackUp_Sheet").Select 
    Range("A1").Select  'lets paste the data in the same positión 
    ActiveSheet.Paste 
    Application.CutCopyMode = False 
    Sheets("Data_Sheet").Select 
End Sub 

Ce faire une copie des données et les formules, copier des graphiques sans casser sa source de données est un autre problème, peut-être que vous pouvez développer sur cette question. Avez-vous des graphiques?

Sub RestoreData() 'this will be linked to you "Reset" and "Exit" button 
    Sheets("BackUp_Sheet").Select 'select shhet with data, just in case 
    Range("A1:M56").Select ' range of your important data in your excel sheet 
    Cells.Select 
    Selection.Copy 
    Sheets("Data_Sheet").Select 
    Range("A1").Select  'lets paste the data in the same positión 
    ActiveSheet.Paste 
    Application.CutCopyMode = False 
End Sub 

salle habituelle d'amélioration:

  • sélectionnez Dinamicaly la plage, mais pas sélectionner toute la feuille, car isssuses de mémoire peuvent survenir. (Je n'ai plus de ressources quand j'essaie de copier toute la cellule d'Excel 2007 dans mon ordinateur portable: P).
  • Supprime le scintillement avec Application.ScreenUpdating.
  • Je n'ai pas vérifié si cela fonctionne lorsque la * feuille_sauvegarde * est cachée.

L'autre isssuse est débloquer les données dans la feuille.

Sub UnlockMySheet() 
     'password here won`t protect the business logic or the code from prying eyes, just the user from themselves 
     ActiveWorkbook.Unprotect 
     ActiveSheet.Unprotect 
     Range("D9,B13").Select ' select the editable cells 
     Selection.Locked = False 
     Selection.FormulaHidden = False 
     ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True 
     ActiveSheet.EnableSelection = xlUnlockedCells 
     ActiveWorkbook.Protect Structure:=True, Windows:=True 
End Sub 

salle habituelle d'amélioration:

  • Peut-être que j'ai oublié le protocole et `m juste protect quitter la page exactement comme il était. (désolé pas le temps de prouver ce code).
  • Suggestion de stackoverflow esprit collectif.

et qui est, pour l'instant