将标题的值打印到TextBox中

时间:2013-08-15 16:19:09

标签: vba

我正试图在一系列细胞中循环,直到找到我正在寻找的细胞。找到后,我想记下该单元格的列并打印其标题,该行位于第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中?我只能把它打印到盒子里“真”。我认为这是一个数据类型问题,但我无法解决它。

2 个答案:

答案 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;这将显示包含与原始呼叫一起显示的文本的单元格的地址。