2014-10-09 27 views
1

这是一个稍微重复的问题,但我相信它可能会简化这种情况。取消隐藏单元格更改的行

对象的代码:当一个用户拿起从小区验证入口(即,在变化)代码必须

  • 在H柱在我列中输入用户名
  • 输入时间戳
  • 取消隐藏下一行
  • (意外的下一步骤中,不是用户交互式显示线)

步骤1至3现在是功能性的,步骤4不

当前代码:

Private Sub Worksheet_Change(ByVal Target As Range) 

Dim ChangedCell As Object 


     For Each ChangedCell In Target 
      If ChangedCell.Column = 5 And ChangedCell <> "" Then 
       Cells(ChangedCell.Row, 8) = Environ("USERNAME") 
       Cells(ChangedCell.Row, 9) = Format(Now(), "HH:MM:SS") 
       ChangedCell.Offset(1, 0).EntireRow.Hidden = False 
       If Cells(ChangedCell.Offset(1, 0), 1).Value <> "HC" Then 
       ChangedCell.Offset(1, 0).EntireRow.Hidden = False 
       End If 
      End If 
     Next 
End Sub 

罗布。

+0

试试'Cells(ChangedCell.Row + 1,1).EntireRow.Hidden = False'。 – Jeeped 2014-10-09 17:59:17

+0

未成年人,但我会声明'ChangedCell'和'UnHideRow'为'Range'而不是'Object' – guitarthrower 2014-10-09 19:44:34

回答

3

试试这个:

ChangedCell.Offset(1, 0).EntireRow.Hidden = False 

N.B:可能的原因,为什么你的代码导致错误:显然你不能写入只读值。

enter image description here

所附回答所附问题(STEP 4_ “显示线不属于用户交互”)

Option Explicit 

'' 假定信息(非交互式)细胞被合并这是E列的最后一行。

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim ChangedCell As Object 
Dim last_Row, iter 
last_Row = Worksheets("Sheet2").Cells(Rows.count, 5).End(xlUp).Row  ''change sheet name if different 

     For Each ChangedCell In Target 
      If ChangedCell.Column = 5 And ChangedCell <> "" Then 

       For iter = 1 To last_Row 
       ChangedCell.Offset(iter, 0).EntireRow.Hidden = False 
       On Error GoTo errhand 
        If ChangedCell.Offset(iter, 0).MergeArea.Address = ChangedCell.Offset(iter, 0).Address Then 
        On Error GoTo 0 
        Cells(ChangedCell.Row, 8) = Environ("USERNAME") 
        Cells(ChangedCell.Row, 9) = Format(Now(), "HH:MM:SS") 
        'MsgBox ChangedCell.Row 
        Exit Sub 
        End If 
errhand: 
       'MsgBox "info row" 
       Next 
      End If 
     Next 
End Sub 
+0

我没有意识到UnHideRow是只读的?我认为,自从我创建它之后,我就可以用它来做我想要的东西......无论如何,您的产品线都能完成这项工作。非常感谢:)现在我只需要继续并重新格式化书中的每一张纸。谢谢! – 2014-10-09 19:55:35

+0

它也是我的荣幸。祝你好运。 – ZAT 2014-10-09 19:57:35

+0

到目前为止,这么好,已经完成了一些表单的格式化,并且它们都按照广告方式工作 - 虽然我可能已经将自己绘成了一个角落,但表单中有几行是信息而不是用户交互(即没有下拉框),我需要这些线,然后下一个用户线都出现,有什么建议吗?或者这是“你需要重新格式化所有表单”类型的问题? 我正在看你的线后的第二个IF,检查列“A”为“HC”,如果不在那里,取消隐藏下一行并重新检查,否则结束如果? – 2014-10-09 20:33:03

相关问题