エクセルのマクロで列を指定するのに、1行目の名前を使って指定するにはどうかけばいいのでしょうか? シートで列を挿入されると動作が変わってしまうので、名前ベースでやりたいのです。名前がないときは、エラーを出してとまってくれるマクロならなおよしです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/03/22 14:09:46
  • 終了:2009/03/29 14:10:02

回答(1件)

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912009/03/22 15:58:37

ポイント60pt

1行目の名前というのは名前の定義ではなく1行目のセルの値ということでしょうか。

であれば、下記のようでどうでしょうか。

Sub test()
    Dim name As String
    name = "abc"
    If getColumn(name) = 0 Then
        MsgBox name & "はありません"
    Else
        MsgBox name & "は" & getColumn(name) & "列です"
    End If
End Sub


Function getColumn(cName As String)
    Dim res As Range
    Set res = Rows(1).Find(what:=cName, lookat:=xlWhole)
    If res Is Nothing Then
        getColumn = 0
    Else
        getColumn = res.Column
    End If
End Function

列を取得したい場所で getColumn( 名前 ) というように使用すれば取得できます。

http://excelvba.pc-users.net/fol7/7_1.html

id:kaiketsu

ありがとうございます。やはりめんどうですね。

2009/03/22 18:21:02
  • id:Mook
    「セルに名前を付ける」ということをしておけば、
    http://www.relief.jp/itnote/archives/000208.php


    Range("名前").Column で列を取得したり、


    Range("名前").Offset( r, c ) などで相対位置指定が可能です。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません