2011-08-05 128 views
-2

好吧,我正在创建一个电子表格,可以由另一个用户编辑,但以其他方式锁定。我希望做的是创建3个按钮。 “如果”“退出如果”和“重置”Excel 2010宏与按钮的乐趣

“如果”会允许用户输入数据。 “退出,如果”将允许用户退出输入模式并恢复为默认值。文件。 然后“重置”将允许用户停留在“假如”,但将所有值重置为默认值。

然后我想按钮“如果”某个地方出现了在左侧,但是当你点击它,它取代了“退出”和“复位”

+1

你有什么代码,使远吗?这不应该是一个非常艰巨的任务,但它有助于从某个地方开始。 :) –

+2

@迈克尔:你的问题是什么? –

回答

1

我建议你解释多一点你的问题,但到目前为止,我可以infere你有以下问题:

  • 有一个公式和数据锁定的Excel工作表。
  • 提供编辑页面,但不保存更改,作为“咨询”数据。

我可以主要提供以下内容:

  • 创建支持片在您为您节省基页
  • 解锁片进行编辑。
  • 如果您退出编辑,则将数据从备份恢复到主工作表。
  • 如果您重置编辑,请执行与退出相同的过程并再次解锁数据。 (于它是如何绘制的码流,复制片已锁定他的数据)

这将导致跟随着代码:

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 

这使数据和公式的一个副本,在不破坏数据源的情况下复制图表是另一个问题,也许你可以在这个问题上进行阐述。有任何图表?

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 

通常的改进余地:

  • Dinamicaly选择的范围内,但没有选择所有的片材,因为存储器isssuses可能出现。 (当我试图在我的笔记本电脑中复制excel 2007的所有单元时,我用尽了资源:P)。
  • 删除闪烁与Application.ScreenUpdating
  • 我没有检查这个工作是否在* backup_Sheet *是隐藏

其他isssuse是解锁表中的数据。

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 

平常的提升空间:

  • 也许我忘了保护协议,我真的就要离开,正是因为它是页面。 (对不起,没有时间来验证此代码)。
  • 从stackoverflow集体思维的消化。

,那就是,现在