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 に答える