Office中国论坛/Access中国论坛

标题: 如何用VBA清零 [打印本页]

作者: w5xzm    时间: 2008-2-18 14:59
标题: 如何用VBA清零
我的工作表要反复使用,又不想老用复制工作簿
里面有很多分散的单元格要填数字,
每用一次都要清除上一次填下的数字
请教高手,有没有方法用VBA实现查找未锁定的单元格,并将其清零??


作者: pureshadow    时间: 2008-2-19 19:20
Sub aa()
For Each a In activesheet.usedrange
If a.Locked = False Then
a.ClearContents
End If
Next
End Sub

[ 本帖最后由 pureshadow 于 2008-2-19 21:23 编辑 ]
作者: w5xzm    时间: 2008-2-22 23:22

thankyou pureshadow
I'try................
作者: w5xzm    时间: 2008-2-23 00:08

虽然可以但速度太慢.............
作者: pureshadow    时间: 2008-2-23 00:36
内容很多的话,可以把activesheet.usedrange改成小点范围的区域。
作者: w5xzm    时间: 2008-2-23 13:37
谢谢版主
每一张表的内容也多,
而且工作簿有近十张表
................
有没有直接让电脑清除整个工作簿中未锁定的单元格内容的语句,而不用条件??

看过妖的QQ空间~~~~~有很多可学的东东啊....................
作者: pureshadow    时间: 2008-2-23 16:29
有个高手写了个一次性选定所有未锁定单元格的代码,你可以试试。
Sub bb()
Dim mrg As Range, K As Integer
For Each mrg In ActiveSheet.UsedRange
If mrg.Locked = False Then
K = K + 1
If K = 1 Then mrg.Select
Union(Selection, mrg).Select
End If
Next mrg
End Sub

最后再加个selection.clearcontents就全删除了。
作者: w5xzm    时间: 2008-2-23 17:20

不错不错...
虽然速度还是稍显不足
不过已经是可以接受啦~~~~
谢谢小妖~~~~~~~~
作者: pureshadow    时间: 2008-2-25 15:56
我师傅给了我个另类的代码,可以试试:
Sub test()
    Dim vUnlocked As Variant
    Dim rngUnlocked As Range
   
    With ActiveSheet
        If .ProtectContents = True Then .Unprotect
        vUnlocked = .UsedRange
        .UsedRange.ClearContents
        .Protect
        On Error Resume Next
        .UsedRange.Value = 1
        .Unprotect
        Set rngUnlocked = .UsedRange.SpecialCells(xlCellTypeConstants)
        .UsedRange = vUnlocked
        rngUnlocked.Select
    End With
selection.clearcontents
End Sub
作者: w5xzm    时间: 2008-2-26 08:04
实在是高

Sub test()
    Dim vUnlocked As Variant
    Dim rngUnlocked As Range
   
    With ActiveSheet
        .Unprotect Password:="abcd"   '<<<<这好象要加入解保护??
        If .ProtectContents = True Then .Unprotect
        vUnlocked = .UsedRange
        .UsedRange.ClearContents
        .Protect
        On Error Resume Next
        .UsedRange.Value = 1
        .Unprotect
        Set rngUnlocked = .UsedRange.SpecialCells(xlCellTypeConstants)
        .UsedRange = vUnlocked
        rngUnlocked.Select
        .Protect Password:="abcd"       '<<<< 这好象要加入加保护???
    End With
Selection.ClearContents
End Sub


运行之后所有的公式失去功能
还请改进

[ 本帖最后由 w5xzm 于 2008-2-26 08:29 编辑 ]
作者: pureshadow    时间: 2008-2-26 09:48
都说了是另类代码嘛
作者: w5xzm    时间: 2008-2-26 11:34
用来作毒倒也不赖
作者: pureshadow    时间: 2008-2-26 11:41
workbooks.add加个数量,不要多1000左右,做在workboos_open里,谁说不是病毒了呢?
作者: w5xzm    时间: 2008-2-26 13:08
我在妖的空间里,看到有剔除重复的公式
正好,近期我也碰到了类似的烦事
可是我怎样也弄不好,还请赐教哦~~
我的问题是这样:
   A    B   C   D   E  
1 50   甲  乙  丙  丁     
2 30   乙  甲  甲  甲
3 20   甲  乙  丙  
4 10   甲  乙  丙  丁
5 30   甲  甲  乙  乙
6 30   甲  乙  丙  
...
我想得到的结果是:
   A    B   C   D   E  
1 60   甲  乙  丙  丁
2 30   乙  甲  甲  甲
3 50   甲  乙  丙  
4 30   甲  甲  乙  乙
5
6  
...
B、C、D、E列是汉字,A列是数据



[ 本帖最后由 w5xzm 于 2008-2-26 13:10 编辑 ]
作者: pureshadow    时间: 2008-2-26 13:35
要求四列都一样的为重复吗,最简单的办法,把四个单元格用&合并为一个,然后再随你用哪种方式剔除重复。
作者: w5xzm    时间: 2008-2-26 13:48
啊呀,对呀用&、合并!!
瞧我的脑呆瓜子........ ~
作者: w5xzm    时间: 2008-2-26 13:49
谢了




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3