2

過去に私のn00bishの質問に我慢してくれてありがとう、私は広範な調査を行ったが答えが見つからなかった別の質問があります.

テーブル内の行をループして特定の列の値を選択しようとしています。この時点で、その値でやりたいことは MsgBox に入れることだけですが、私の試みは繰り返し失敗しました。

Dim id As Range
Dim trtype As Range

set id = Activesheet.Range("Table1[Column1]")

For Each r In id
    r.Select
    Set trtype = .Range(Cells(.ActiveRow, "Column5"))
    MsgBox trtype.Value
Next r

trtype = .Range(Cells(.ActiveRow, "Column5")これにより、行が強調表示された「タイプの不一致」が返さ れます。

これを機能させる方法についてのアイデアはありますか?

4

2 に答える 2

1

次の行の SET という単語が抜けています。

trtype = .Range(Cells(.ActiveRow, "Column5")) 

trtype はオブジェクト変数 (つまり、組み込みの Excel オブジェクトを指す変数) です。VBA の規則では、SET を使用して割り当てる必要があります。

何年もの間、これは私の最も一般的な VBA エラーでした。

于 2012-05-01T15:40:05.737 に答える
0

次のことを行うことで動作するようになりました。

For Each r In id
    r.Select
    trtype = Selection.Text
    MsgBox trtype
Next r

set についての答えで正しい軌道に乗ってくれてありがとう。 set をいつ使用するかについての議論と、それがオブジェクト専用であり、文字列を.TextNotで設定する必要があるという発見につながりました。.Value

于 2012-05-01T23:43:23.530 に答える