0

我正在尝试遍历一系列单元格,直到找到我正在寻找的单元格。找到后,我想记下该单元格的列并打印其标题,该标题位于第 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 中?我只能让它在框中打印“True”。我认为这是一个数据类型问题,但我无法解决。

4

2 回答 2

1

使用查找循环比单独遍历每个单元格要快得多:

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
于 2013-08-15T16:53:04.653 回答
0

您的代码看起来不错,尽管我只是引用x.Column而不是ActiveCell.Column. 您确定结果实际所在列的第 2 行包含标题吗?作为实验,尝试显示ActiveSheet.Cells(2, ActiveCell.Column).Address; 这将显示包含与原始调用一起显示的文本的单元格的地址。

于 2013-08-15T16:36:12.300 回答