• ベストアンサー

列の番号ではなく文字列で取得するには

エクセル2003 Sub test() MsgBox ActiveCell.Column End Sub で現在カーソルのあるセルの列番号「3」が取得させるのですが 「C」と言う風に列の文字列で取得するにはどうすればいいのでしょうか? よろしくお願いします。

noname#150256
noname#150256

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.5

話の種に参戦してみます。 Sub test() MsgBox strColumnNo(ActiveCell) End Sub Function strColumnNo(target As Range) As String Dim strFormula As String strFormula = "C" & target.Cells(1).Column strFormula = Application.ConvertFormula(Formula:=strFormula, _ fromReferenceStyle:=xlR1C1, toReferenceStyle:=xlA1, ToAbsolute:=xlRelative) strColumnNo = Left(strFormula, Len(strFormula) - InStr(strFormula, ":")) End Function

参考URL:
http://t_shun.at.infoseek.co.jp/My_Page/Excel-VBA/vba_page7.htm
noname#150256
質問者

お礼

関数を使う技もあるんですね! 大変参考になりました。ご回答ありがとうございます。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

そうも出来る、という程度の内容ですが Sub test02() c = ActiveCell.Column x = c Mod 26 y = Int(c / 26) If y = 0 Then z = Chr(x + 64) Else z = Chr(y + 64) & Chr(x + 64) End If MsgBox z End Sub

noname#150256
質問者

お礼

試してみたらできました! ご回答ありがとうございます。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

Excel2000以降ならSplit関数が使えます。 MsgBox Split(ActiveCell.Address, "$")(1)

noname#150256
質問者

お礼

できました。大変参考になりました。ご回答ありがとうございます。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

Sub test() Dim ca As String, n As Integer ca = ActiveCell.Address n = InStr(2, ca, "$") ca = Mid(ca, 2, n - 2) MsgBox ca End Sub

noname#150256
質問者

お礼

やってみたらできました。 大変参考になりました。ご回答ありがとうございます。

  • NNAQ
  • ベストアンサー率56% (104/184)
回答No.1

Sub test() Dim s As String With ActiveCell s = .Address(False, False) s = Replace(s, .Row, "") End With MsgBox s End Sub

noname#150256
質問者

お礼

大変参考になりました。ご回答ありがとうございます。

関連するQ&A

  • vba 結合されたセルの列番号を取得したい

    セルを結合しているセルに、値が入っていて、 その値を検索して列番号を取得したいのですが エラーになります。 A1セルとA2セルを結合して、 「a」をいれて Sub test() MsgBox Cells.Find(What:="a", LookAt:=xlWhole).Column MsgBox Rows("1:2").Find(What:="a", LookAt:=xlWhole).Column End Sub をしても、どちらもエラーになります。 実行時エラー91「オブジェクト変数またはWithブロック変数が設定されていません」 というエラーです。 でもB1に「a」を入れれば、問題なく2が返されます。 結合されててもセルを検索する方法を教えてください。

  • 最終列の列番号を列文字に変換することはできますか?

    例えばaaaがある列を探し、その列番号は4で列文字がDですが、 列番号から列文字をvbaで取得する方法はありますか? Sub Sample() Dim i As Long Dim Colmoji As String i = Rows(1).Find(What:="aaa", LookAt:=xlWhole).Column Colmoji = i 'ここで列文字に変換したい MsgBox i & "の列文字は" & Colmoji & "です" End Sub このようなコードを作ってみたのですが列文字に変換する方法がわかりません。

  • 選択したセルの座標の取得

    選択したセルの座標の取得 sheet1    A B C   1   2  α     3     sheet1のB2にはαという文字が挿入されており、ハイパーリンクの設定がしてあります。 B2をクリックするとsheet2に移行します。 sheet1で選択したセルの位置を取得したいのですが、上手くいきません。 ご教授の程、宜しくお願いします。  現在の記述は以下の通りです。  Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)  Dim gyo As Long  Dim ret As Long  gyo = ActiveCell.Row  ret = ActiveCell.Column  MsgBox "行番号" & gyo & "列番号" & ret  End Sub Sheet1のB2を選択して、Sheet2に移行した時に、Msgboxには、 行番号2 列番号2 というようにしたいのです。

  • 1列目の何行目に検索文字があるかを取得したい

    しかしエラーになってしまいます。 エラーの原因がわかりません。 シートの1列目のどこかに「test」と入っている行があるのですが Sub test1() Dim myRow As Long With Sheets("Sheet") myRow = .Column(1).Find(What:="test").Row MsgBox .Cells(myRow, 1) End With End Sub このvbaコードを実行するとエラーになります。 コードとしては「.Column(1)」で1列目と言う意味で、 .Find(What:="test")で、何行目に「test」があるかを取得するという意味だと思うのですが 実行時エラー438が発生します。 実際にtestと言う文字は2行目にあるのですが なぜmyRowに2が代入されないのでしょうか?

  • VB Excel操作でActiveCellの文字変換

    VisualBasic6.0 (初心者) 保管場所が指定されない(様々な)Excelファイルを開き、ActiveCellの文字を変換(大文字・小文字・半角など)出来るよう下記コードを考えました。 この場合、Load後にExcelを起動しないとActiveCellが得られません。 Load時にMsgBox ActiveCellを入れたのは、たまたまExcelを起動させたらActiveCellが得られ、文字が変換出来たからです。 これは何故でしょう?? また、起動中のExcelファイルを再起動させなくてもActiveCellが得られる方法は無いでしょうか? '------------------------------------ Private Sub C1_Click() Dim TTT As String Dim UUU As String On Error Resume Next If ActiveCell.Row = 0 Then MsgBox "Active Excel 無し" Else TTT = Cells(ActiveCell.Row, ActiveCell.Column).Value UUU = StrConv(TTT, 1) Cells(ActiveCell.Row, ActiveCell.Column).Value = UUU End If On Error GoTo 0 End Sub '------------------------------------ Private Sub Form_Load() On Error Resume Next MsgBox ActiveCell On Error GoTo 0 End Sub

  • 結合させた状態で、vbaで列番号を取得する方法

    A1とA2を結合させた状態で、vbaで列番号を取得する方法はありますか? この状態で Sub Sample() Dim 列 As Long 列 = Rows(1).Find(What:="検索文字", LookAt:=xlWhole).Column End Sub をすると、エラーになります。 結合を解除すれば、1が返ります。 結合させた状態でなおかつ列番号を取得する方法をご教授下さい。

  • 非表示の列があるか取得したい。

    Sub Macro1() Columns("a").Hidden = True End Sub としたら、A列が非表示になりますよね。 そして、セル全体に非表示の列があるかどうかを取得したい場合はどうすればいいでしょう? Sub Macro2() If Cells.Hidden = True Then MsgBox "非表示の列があります" End If End Sub をすると、実行時エラー1004になります。 それに Cells.Hiddenの時点で、列だけじゃなくなってしまいます。 あと、最終列はファイルによってまちまちです。 Z列の時もあれば、EAの時もあります。 ご回答よろしくお願いします。

  • Excel:文字列の比較:大文字と小文字の区別

    Excel(2002)のワークシートの数式で文字列を比較するとき 半角英字の大文字と小文字が区別されないようなのですが、 区別するためにはどうしたらよいのでしょうか。 ※任意のセルで ="a"="A" とすると TRUE が帰ってくる。Countif などの動作も同様。 ※VBAでは次のコードを実行すると FALSE が表示される。 Sub compare() If "a" = "A" Then MsgBox "TRUE" Else MsgBox "FALSE" End If End Sub カテゴリ違いかもしれません。とすれば申し訳ありません。よろしくおねがいします。

  • エクセル:Targetの列番号を英字で出す

    Private Sub Worksheet_Change(ByVal Target As Range)   MsgBox Target.Column End sub このコードを書いたシートでセル"B1"の値を変更すると、 メッセージボックスで 2 と出ますが、 B と出したい(列番号ではなく、列の英字で)場合はどのように書けばよいでしょうか。 Left関数やMid関数を使ってTarget.Addressから英字部分を抜き出す、というコードも組んでみましたが、 そんなことしなくても出そうな気がするので、 そのような書き方がありましたら教えてください。

  • エクセル マクロ 特定の文字の色を変更

    Private Sub CommandButton6_Click() MsgBox Mid(ActiveCell, InStrRev(ActiveCell, "⇒") + 1) End Sub このようなマクロがあり 選択しているセルの最後から⇒まで部分をMsgboxで表示してくれますが この文字の色を変更したい場合はどうすればいいでしょうか?

専門家に質問してみよう