-2

好的,所以我正在创建一个电子表格,可以由另一个用户编辑,但否则会被锁定。我希望做的是创建 3 个按钮。“假设”“退出假设”和“重置”

“如果”将允许用户输入数据。“Exit what if”将允许用户退出输入模式并恢复为默认值。文档。然后“重置”将允许用户留在“如果”但将所有值重置为默认值。

然后我希望按钮“如果”出现在左侧的某处,但是当您单击它时,它会被“退出”和“重置”取代

4

1 回答 1

1

我建议您多解释一下您的问题,但到目前为止,我可以推断您有以下问题:

  • 有一个带有公式和数据锁定的 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

通常的改进空间:

  • 动态选择范围,但不要选择所有工作表,因为可能会出现内存问题。(当我尝试在我的笔记本电脑中复制 excel 2007 的所有单元格时,我的资源用完了:P)。
  • 使用Application.ScreenUpdating消除闪烁。
  • 当 *backup_Sheet* 被隐藏时,我没有检查这是否有效。

另一个问题是解锁工作表中的数据。

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集体思想的建议。

也就是说,现在

于 2011-08-06T13:26:00.487 回答