- ベストアンサー
Excelで可視セルの行番号取得
Excelでグラフ(散布図)のポイントをクリックしたときに、そのグラフ上の何番目かを所得してレコード情報をフォーム上に表示するように作成しました。 しかし、オートフィルタで絞り込んだ場合には取得した番号と行番号が一致しないので困っています。 そこで質問なのですが 1.可視セルの何番目というような取得方法はあるのでしょうか? 2.それともグラフからポイントの何番目というのではなく、元データの行番号は取得可能でしょうか? 分かりにくい質問で申し訳ないのですが、よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 元のコードがなくては、よく分かりませんが、こういうことでしょうか? 'サンプルコード '可視セルを順番に取得しているはずです。 Sub test1() Dim myRows As String, c As Range Dim Rng As Range On Error GoTo 0 '1番上をフィールド名(項目行)だとしたら Set Rng = Range("A2", Range("A2").End(xlDown)).SpecialCells(xlCellTypeVisible) On Error Resume Next For Each c In Rng.Cells myRows = myRows & "," & c.Row Next MsgBox Mid$(myRows, 2) End Sub
お礼
早速の回答ありがとうございます。 元のコードを載せていなくてすみません。 今回は、以下のようにコードを書いています。 Public myClass1 As New Class1 Public Sub InitializeChart() Set myClass1.myChartClass = Worksheets(1).ChartObjects("Test").Chart End Sub クラスモジュール(Class1) Public WithEvents myChartClass As Chart Private Sub myChartClass_MouseUp(ByVal Button As Long, ByVal Shift As Long, ByVal X As Long, ByVal Y As Long) Dim ElemID As Long, Arg1 As Long, Arg2 As Long Dim Var, XVar, YVar, MyRow As Variant ActiveChart.GetChartElement X, Y, ElemID, Arg1, Arg2 Select Case ElemID Case xlSeries Range("A2:A10").Select Selection.SpecialCells(xlCellTypeVisible).Select With ActiveSheet.UsedRange MyRow = .Resize(.Rows.Count).Offset(Arg2 + 1) _ .SpecialCells(xlCellTypeVisible).Row End With End Select End Sub で、「MyRow」で取得した行番号を利用していました。 OffsetやCellsを利用していては無理ですよね。 回答を参考に可視セルのみから何番目というのが取得できるようになり解決しました。 ありがとうございました。