我在做一个电子表格来记录出勤情况。
列B是从另一个工作表中的DB表验证的数据。列D、E、F、G使用XLOOKUP根据列B上的名称从同一个DB表中提取数据。
问题:如果DB表中的某些内容发生了变化,比如一个人的帐号,那么这个人过去的每次出勤都会被更新。
示例
我需要“锁定”已经填充的单元格中的数据,尽管它们应该接受手动编辑。
到目前为止,我试着在工作表的某个地方放一个按钮,删除所有公式,但保留单元格的值。我用谷歌搜索了一下,得到了这个:
Sub Remove_Formulas_from_Selected_Range()
Dim Rng As Range
Set Rng = Selection
Rng.Copy
Rng.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Application.CutCopyMode = False
End Sub
我如何调整按钮,使它检查表的每一行,如果该行的B列不为空(意味着该行是用一个人的数据填充),只有然后删除该行的公式,并保留值。
2条答案
按热度按时间gxwragnw1#
此子函数用于工作表的模块和一个“固定”表名
私有订阅doTheJob()尺寸为范围,rw为长型,c为MsgBox的长型(“是否更改具有选定区域中的值的公式?",vbDefaultButton2 + vbExclation + vbYesNo)= vbYes然后设置rng = Me.ListObjects(“表名称”).范围rw = rng.行.计数大型应用程序.屏幕更新=假(对于c = 1)到rw(如果修剪)(rng.单元格(c,2).值)〈〉“”然后rng.行(c).复制rng.行(c).粘贴选择性粘贴:=xlPasteValuesAndNumberFormats如果下一个应用程序则结束。CutCopyMode = False如果结束子项则结束
当范围是表时使用此代码。将“NameOfTable”修改为表的真实的名称。
这个子是工作簿必须复制到一个模块内的文件夹“模块”。在工作表你想调用这个,添加一个ActiceX按钮,并调用子如下:
uajslkp62#
您的文件必须是.xlsm文件。添加一个ActiveX按钮。双击它。在创建的button_click()sub中添加一行:call doTheJob -粘贴以下代码后:
在单击按钮之前,您必须选择您感兴趣的范围,以将公式替换为值。