我正试图在一系列细胞中循环,直到找到我正在寻找的细胞。找到后,我想记下该单元格的列并打印其标题,该行位于第2行。代码如下所示:
For Each x in Sheets("Sheet1").Range("A3:AK20")
If x.Value = sectionTbx.Text Then
'print value of specific row in the column
x.Activate
MsgBox(Cells(2, ActiveCell.Column))
End If
Next
我已尝试使用&ActiveCell.Column
,引号并将ActiveCell.Column保存为变量等。即使我设法正确打印出MsgBox (ActiveCell.Column)
,这也无效。
我也试过输入.End(xlsUp).Offset(-1,0)
但是由于某种原因,它选择作为顶部单元格的单元格会有所不同(我正在实现搜索并将宏返回到其他人的电子表格表格中,我认为他们可能已将其格式化了非常糟糕,这会以某种方式影响xlsUp。)
如何在用户表单中将标题的值打印到TextBox中?我只能把它打印到盒子里“真”。我认为这是一个数据类型问题,但我无法解决它。
答案 0 :(得分:1)
使用find循环要比单独遍历每个单元格快得多:
Dim rngFound As Range
Dim strFirst As String
With Sheets("Sheet1").Range("A3:AK20")
Set rngFound = .Find(sectionTbx.Text, .Cells(.Cells.Count), xlValues, xlWhole)
If Not rngFound Is Nothing Then
strFirst = rngFound.Address
Do
MsgBox .Parent.Cells(2, rngFound.Column).Text
Set rngFound = .Find(sectionTbx.Text, rngFound, xlValues, xlWhole)
Loop While rngFound.Address <> strFirst
End If
End With
答案 1 :(得分:0)
您的代码看起来不错,但我刚刚引用了x.Column
而不是ActiveCell.Column
。您确定结果实际包含标题的列的第2行吗?作为实验,请尝试显示ActiveSheet.Cells(2, ActiveCell.Column).Address
;这将显示包含与原始呼叫一起显示的文本的单元格的地址。