• ベストアンサー

cellsプロパティ列名をアルファベットに変える

●質問の主旨 cellsプロパティで表された列名をアルファベットに 変えるためにはどのようなコードを使えばよいでしょうか? 例)cells(4,5)→E列 ●質問の補足 cellsプロパティで取り出された行数を Rangeプロパティを表したいと考えております。 上記の例を使うと、 Range("cells(4,5)→E列 & 4")というプロパティを作成し、 Setステートメントを使用した「Rangeオブジェクト」に したいと考えております。 ご存知のかたご教示よろしくお願い申し上げます

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

  • ベストアンサー
  • kybo
  • ベストアンサー率53% (349/647)
回答No.5

>cellsプロパティで表された列名をアルファベットに >変えるためにはどのようなコードを使えばよいでしょうか? Sub macro() ’変数Aの値が列名のアルファベットです。 Dim A As String A = Split(Cells(4, 5).Address, "$")(1) MsgBox Range(A & 4).Address End Sub わざわざアルファベットに変える必要性はないです。 Dim R As Range Set R = Cells(4, Cells(4, 5).Column) こうすれば、いいです。

dradra33
質問者

お礼

kybo様 ご回答ありがとうございます。 上記のコード参考にさせていただきます。

その他の回答 (4)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.4

Cells(4,5)はRangeオブジェクトです。 面倒なことをしなくても設定できます。 Dim 範囲 As Range Set 範囲 = Cells(4, 5) 他には Set 範囲 = Range(Cells(1, 1), Cells(4, 5)) と言うのもあります。 どうしても英字にしたいなら次のように します。 Dim 列位置 As Long Dim 列記号 As String 列位置 = Cells(4, 5).Column - 1 列記号 = IIf(列位置 < 27, "", Chr(64 + (列位置 \ 26))) _      & Chr(65 + (列位置 Mod 26 ))

dradra33
質問者

お礼

nda23様 ご回答ありがとうございます。 上記のコード参考にさせていただきます。

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.3

27進数だと考えれば自作関数で数値を文字列の ならびに変換するのもそれほど難易度の高い話 ではないです。

dradra33
質問者

お礼

MARU4812 ご回答ありがとうございます。 アドバイス参考にさせていただきます。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

NO1です。(追記) アルファベットでなくA1表記がご希望なら、Range(Cells(4, 5).Address(0, 0))で良いですよね。

dradra33
質問者

お礼

mu2011様様 たびたびのご回答ありがとうございます。 追記の例も参考にさせていただきます。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

一例です。 Left(Cells(4, 5).Address(0, 0), 1)

dradra33
質問者

お礼

mu2011様 お礼が遅くなり恐縮です。 上記の例、参考にさせていただきます

関連するQ&A

  • RangeプロパティとCellsプロパティ

    お世話になります。 現在、VB.NET2003からExcel2003を操作するプログラムを作成しているのですが、基本的な点が一つ、わかりませんので、教えていただけないでしょうか? Range("C5")は、Cells(5,3) Range("B1:D5")は、Range(Cells(1,2), Cells(5,4))、 と表すことが出来ますが、 Range("A1:E1,A4:E7")はCellsプロパティではどのように指定すればよろしいのでしょうか? 以上、宜しくお願いいたします。

  • VBA プロパティについて

    仕事で必用になり、プログラミングを学んでいる者です。 VBAでの基本的なことですが、教えていただきたいことがあります。 例えば・・・ Cells(i, j).value = "あああ" のようなステートメントがあったとき Cells(i, j) の部分をオブジェクト .value の部分をプロパティと考えていいですか? もしそうだとすると、 Cells(i, j).Interior.ColorIndex = i のようなステートメントは Cells(i, j) オブジェクト .Interior プロパティ .ColorIndex プロパティのプロパティ?? ということになるのでしょうか? ちょっと概念が整理できていません。 よろしくお願い致します。

  • プロパティとメソッドが混乱してくる

    ActiveSheet.Cells.SpecialCells(xlLastCell).Addressというステートメントがあるとします。 このどれがメソッドで、どれがプロパティでどれがオブジェクトで、どれがコレクションでと わからなくなってきます。特にメソッドとプロパティは"."で区切られるので混乱してきます。 ActiveSheetオブジェクトのCellsメソッドのSpecialCellsプロパティのAddressプロパティに なるんでしょうか?これは一例ですが、ドットが沢山連なるにつれて意味がわからなくなってきます。 どれがプロパティでどれがメソッドでなどです。どのように見分ければいいでしょか?一応は メソッド、プロパティの違いは理解しているつもりです。

  • RangeとCells

    Rangeオブジェクトで使えるメソッドやプロパティは、Cellsでも使えるのですか。 多分そうだろうと思うのですが、断定できる情報が見当たりません。 ヘルプで明確な記述が有る記事等あれば教えて下さい。 宜しくお願いします。

  • adoRsで読み込むアクセステーブルの列名のルール

    こんばんは。 お世話になります。 エクセルでアクセスのデータを読み込みに行き、 取得した結果をシートに出力しています。 このとき、一部の列は出力ができ、一部の列は出力しようとするとエラーになります。 以下のサンプルをご確認ください。 adoRs.Open strSQL, adoCn 'SQLを実行して対象をRecordSetへ ' Range("B12:AI1000").ClearContents '前のデータクリア Range("B12:AI1000").Clear '前のデータクリア i = 12 'スタート行 Do Until adoRs.EOF 'レコードセットが終了するまで処理を繰り返す Cells(i, 2) = adoRs!ID Cells(i, 3) = adoRs!item_no Cells(i, 4) = adoRs!color_no Cells(i, 5) = adoRs!item_name Cells(i, 6) = adoRs!FREE Cells(i, 7) = adoRs!3m Cells(i, 8) = adoRs!50_0-1m この例で行くと、Cells(i, 7)の部分でエラーになります。 列名に数字が入っていると、列名として適切に認識しないのでしょうか? Cells(i, 8)については列名に「_」まで入っているので、 エクセルのstrSQLへのSQLクエリのセットの改行時にも使われる記号ですし、 より悪いのかなとも思います。 列名に数字を入れるとダメなものでしょうか? また列名が数字の場合でもエラーにならない表現方法はあるのでしょうか? ご回答よろしくお願いいたします。

  • エクセルVBA CellsとRangeの違い

    CellsとRangeの違いが分りません。違いを明確にするために以下の説明文を書きましたが、正しいでしょうか? ---------------------- Cellsはセルを表すコレクションである。Cell(s)と複数形になっている。コレクションはオブジェクトの集合体なので、コレクションCellsはセルオブジェクトの集合体である。Cellsはあくまでコレクションであってオブジェクトではない。 一方、Rangeはセルを表すオブジェクトである。 ---------------------- CellsがコレクションならばCells(Range("A10"))の表記があってもいいと思いますが、実際にはありません。Cells(1,10)です。なぜですか? コレクションCellsとオブジェクトRangeの違いを明確に示す例はありませんか?

  • アルファベットじゃないなら

    初めまして。よろしくお願いします。 エクセル2010を使用しています。 例題としてA列に abc 123 あいう 一二三 という値が入っているのですが、”先頭文字(左から一文字目)がアルファベットじゃないのなら” という条件で条件分岐するにはどうすればいいでしょうか? Sub もし() Dim MyRow As Long For MyRow = 1 To Cells(Rows.Count, "A").End(xlUp).Row If Left(Range("a" & MyRow), 1) <> "a" Then MsgBox "1文字目がアルファベットで始まっていません!" End If Next MyRow End Sub これでできるのですが、アルファベットは26個あるから、IFステートメントを26個作るしかないのでしょうか?

  • エクセルVBA Columnプロパティで・・・

    エクセル2002使用です。 FindメソッドでRangeオブジェクトを取得し、Columnプロパティでそのオブジェクトの列番号をを取得し、Columnsプロパティーでその列番号が最後になる複数行を取得して、その取得した範囲の空白セルを削除しようとしています。 Dim findcell as Range Dim cl as String Set findcell = Rows(1).Find(What:="賞") cl = findcell.Column Columns(3:cl).SpecialCell(xlCellTypeBlanks).Delete Columns(3:cl)でエラーとなってしまいます。 Columnsプロパティーで複数行を取得するときは、アルファベットの列番号を指定しなければならないと思うのですが、Columnプロパティーでは、数字で列番号を取得してしまうため困っています。 Columnプロパティーでアルファベットを取得する方法 または Columnsプロパティーで複数行を数字の列番号で取得する方法で何か良い方法はありますでしょうか? よろしくお願いします。

  • VBA Range・Cellsプロパティについて

    下記のコードについて質問致します。 Sub 特定のセルをコピー() Dim rw2 As Long Dim rw1 As Long Dim newdate As Date With Worksheets("steet1") rw2 = .cells(.Rows.Count, "c").End(xlUp).Row newdate = .Range("c" & rw2).value For rw1 = rw2 - 1 To 1 Step -1 If .Range("c" & rw1).value <> newdate Then Exit For Next rw1 .Range(.cells(rw1 + 1, 1), .cells(rw2, 1)).Copy     '(1) Worksheets("steet2").Range("v6").PasteSpecial xlValue End With End Sub (1)部分のコードの意味が分かりません。 よろしくお願いします。

  • 複数のセルを選択しているかを取得するプロパティは?

    SelectionChangeイベントで 複数のセルを選択しているかを取得するプロパティってないのでしょうか? 今は、 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Len(Target.Address) > 5 Then MsgBox "複数のセルが選択されています" End If End Sub こうしていますが、行数が多くなると文字も多くなってしまうので、このコードでは対応できません。 Rangeオブジェクトに何個セルが入ってるかを知る方法はありますか? ウォッチのTargetのcellsを見ても、どう見ればいいのかわかりません

専門家に質問してみよう