Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1889|回复: 5

[已解决]求助高手:启用“保护工作表”功能后,在B列输入商品编号,不能调出相应的数据

[复制链接]
发表于 2011-6-5 14:20 | 显示全部楼层 |阅读模式
启用“保护工作表”功能后,在B列输入商品编号,不能调出相应的数据

最佳答案
2011-6-5 14:45
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Application.EnableEvents = False
  3. Sheets(1).Unprotect Password:=123 '密码为“123”  打开工作表
  4. '中间是你的程序过程

  5.   Sheets(1).Protect Password:=123    '重新用密码保护工作表
  6. Application.EnableEvents = True

  7. End Sub
复制代码

出货登记表1.rar

35.29 KB, 下载次数: 18

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-6-5 14:35 | 显示全部楼层
你的调出相应数据是用VBA
保护工作表

需要要代码中 增加两句代码
先解除 保护
你的过程。。。。
再增加 保护
回复

使用道具 举报

发表于 2011-6-5 14:45 | 显示全部楼层    本楼为最佳答案   
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Application.EnableEvents = False
  3. Sheets(1).Unprotect Password:=123 '密码为“123”  打开工作表
  4. '中间是你的程序过程

  5.   Sheets(1).Protect Password:=123    '重新用密码保护工作表
  6. Application.EnableEvents = True

  7. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2011-6-5 14:55 | 显示全部楼层
回复 mxg825 的帖子

代码放到里面了,还是不行的,请帮我检查一下

Public bl As Boolean
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False     '关闭单元格事件
Sheets(1).Unprotect Password:=123
    If Target.Count = 1 Then        '如果选择的只有一个单元格
        If Target.Column = 2 And Target.Value = "" Then '选择的是第一列并且该单元格为空,则写入日期
            Target(1, 0).Value = Application.Text(Now(), "yyyy-mm-dd   hh:mm:ss")
        Else    '否则记录该单元格的值
            K = Target.Value
        End If
    Else    '如果选择的是多个单元格,则选择A1单元格
        [a1].Select
        K = [a1]
    End If

'If bl = False Then
'    If Target <> "" Then
'    Cells(Target.Row + 1, Target.Column).Select
'    Else
'    Exit Sub
'    End If
'Else
'    Exit Sub
'End If
Sheets(1).Protect Password:=123
Application.EnableEvents = True
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
On Error Resume Next
    Dim rng As Range
    Set rng = Sheets(3).Range("A:A").Find(Target, , , 1)
    If Not rng Is Nothing Then
        
        Target = rng.Offset(0, 1)
    End If
   
    Dim Arr
    If Target.Column = 2 Then
        If Len(Target.Value) > 0 Then
            row1 = Sheet2.Range("a65536").End(xlUp).Row
            Arr = Sheet2.Range("a2:D" & row1)
            For hx = 1 To UBound(Arr)
                If Arr(hx, 1) = Target.Value Then
                    Target.Offset(0, 1) = Arr(hx, 2)
                    Target.Offset(0, 2) = Arr(hx, 3)
                    Target.Offset(0, 3) = Arr(hx, 4)
                End If
            Next
        Else
            Target.Resize(, 4).ClearContents
        End If
    End If
            Application.EnableEvents = True
End Sub

回复

使用道具 举报

发表于 2011-6-5 15:07 | 显示全部楼层
你放错了!
应该是下面那个事件(单元格修改事件  Worksheet_Change)

评分

参与人数 1 +1 收起 理由
horriman + 1 改过位置以后,能正常使用了,谢谢

查看全部评分

回复

使用道具 举报

发表于 2011-6-5 15:15 | 显示全部楼层
回复 horriman 的帖子

出货登记表-2.rar (38.62 KB, 下载次数: 16)

评分

参与人数 1 +1 收起 理由
horriman + 1 多谢帅老师

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-15 15:43 , Processed in 0.309605 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表