search值,然后展开列中的所选单元格
所以我一直在这个工作了几个小时,我觉得这个解决scheme很简单,但是我不确定我做错了什么。
我收到错误Object Variable or With block variable not set
Sub unwrap() Dim rgFound As Range Set rgFound = Range("A1:A500").Find("04/05/2017", LookIn:=xlValues) If rgFound Is Nothing Then rgFound.WrapText = True Else rgFound.WrapText = False End If End Sub
我正在寻找04/05/2017
的单元格还包含其他对话,所以我不知道这是为什么我的代码不工作的原因。
rgFound
的值等于Nothing
,这样做没有意义,因为列中的单元格清晰地包含了04/05/2017
我正在寻找04/05/2017的单元格还包含其他对话,所以我不知道这是为什么我的代码不工作的原因。
它还有其他的文字以及@SiddharthRout。 例如:“04/05/2017已完成” – Peter Droz 2分钟前
使用.Find
是非常危险的。 很less有人知道这一点。我们记得这是最后一次设置。 因此,你应该总是指定你想要的。find实现。 你需要使用LookAt:=xlPart
。
尝试这个
Sub Sample() Dim oSht As Worksheet Dim strSearch As String Dim aCell As Range '~~> Change this as applicable Set oSht = Sheets("Sheet1") strSearch = "04/05/2017" Set aCell = oSht.Range("A1:A500").Find(What:=strSearch, LookIn:=xlValues, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False) If Not aCell Is Nothing Then MsgBox "found at " & aCell.Address Else MsgBox "Not Found" End If End Sub
截图
您可能还想要查看.Find和.FindNext在Excel VBA中
将其更改为
Set rgFound = Range("A1:A500").Find("4/5/2017", LookIn:=xlValues)
当range.find没有find该值时,将不会返回任何内容。 在这种情况下,你不能在任何东西上包装。 也许你应该写这个
Range("A1:A500").WrapText = True
编辑:如果单元默认包装,然后简单地写
If Not (rgFound Is Nothing) Then rgFound.WrapText = False End If
当通过一列或一行查看时,我更喜欢MATCH。
与比赛,我们仍然需要处理它不find匹配:
Sub unwrap() Dim i as long On Error Resume Next i = Application.WorksheetFunction.Match("*04/05/2017*",Range("A1:A500"),0) On Error Goto 0 If i <> 0 then Range("A1:A500")(i).WrapText = True Else Range("A1:A500").WrapText = False End If End Sub