• ベストアンサー

エクセルで列名の取得

一定でないデータ範囲の最後の列でソートするマクロを作りたいのですが、列名の取得はどうしたらいいのでしょうか ActiveCell.Columnでは列番号になってしまいます。 教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • taocat
  • ベストアンサー率61% (191/310)
回答No.5

参考までに。(^^;;; Sub Test()  Dim Clm  Clm = Selection.Address(columnabsolute:=False)  Clm = Split(Clm, ":")  Clm = Mid(Clm(1), 1, InStr(Clm(1), "$") - 1) End Sub 以上です。

oldhisa
質問者

お礼

有難うございます. 参考になりました。

その他の回答 (4)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

Sub test() MsgBox ColumnName(selection) End Sub Private Function ColumnName(r As Range) Dim s, a, x s = r.AddressLocal(columnabsolute:=False, rowabsolute:=False) '指定した範囲を相対参照で得る a = Split(s, ":") '後ろのセルを取り出す x = Mid(a(1), 2, 1) '2文字目を取り出す If "1" <= x And x <= "9" Then '数字なら ColumnName = Mid(a(1), 1, 1) '列名は1文字 Else ColumnName = Mid(a(1), 1, 2) '列名は2文字 End If End Function サンプルは、指定した範囲の最後の列の列名を表示します。

oldhisa
質問者

お礼

有難うございます. 参考になりました。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.3

#1の記述を↓のように変えると、 列番号が取得できます。 s = Range("iv1").End(xlToLeft).Cells.Address(0, 0) ↓ s = Range("iv1").End(xlToLeft).Column

oldhisa
質問者

お礼

早速有難うございます。 試してみましたが列番号の数字が取得できるようです。 列名(ABとかCD)を取得してソートに使いたいのですがどうしたらいいでしょうか。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.2

列名でしたね。 セルアドレスを勘違いしてました。 失礼しました。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

↓をお試しください。 ヒントになると思います。 Sub saigo() Dim s As String s = Range("iv1").End(xlToLeft).Cells.Address(0, 0) MsgBox s End Sub

関連するQ&A