Page 579 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼セル指定の変数からA1形式を知るには けん 03/1/20(月) 13:29 ┗Re:セル指定の変数からA1形式を知るには Jaka 03/1/20(月) 13:52 ┗Re:セル指定の変数からA1形式を知るには けん 03/1/20(月) 23:44 ┣Re:セル指定の変数からA1形式を知るには 久蔵 03/1/20(月) 23:55 ┣Re:セル指定の変数からA1形式を知るには ポンタ 03/1/21(火) 0:23 ┗Re:セル指定の変数からA1形式を知るには Jaka 03/1/21(火) 10:28 ┗Re:セル指定の変数からA1形式を知るには ポンタ 03/1/21(火) 13:57 ┗ありが けん 03/1/21(火) 15:36 ┗Re:ありが ポンタ 03/1/21(火) 16:37 ┣ポンタさんへ Jaka 03/1/21(火) 16:58 ┃ ┗Re:ポンタさんへ ポンタ 03/1/21(火) 17:07 ┗ボタンさんへ けん 03/1/21(火) 21:56 ─────────────────────────────────────── ■題名 : セル指定の変数からA1形式を知るには ■名前 : けん ■日付 : 03/1/20(月) 13:29 -------------------------------------------------------------------------
変数となっているセル指定をA1形式にして求めたいのですが どうすればよいのですか。 例えば、「2,3」->「B3」と求めたいのですが。 |
こんにちは。 こう言うことでしょうか? 行 = 3: 列 = 2 MsgBox Cells(行, 列).Address(0, 0) |
▼Jaka さん: >こんにちは。 >こう言うことでしょうか? > >行 = 3: 列 = 2 >MsgBox Cells(行, 列).Address(0, 0) 説明不足ですみません。 いまどのセルにいるか、どのセルがアクティブになっているかそのセル位置が わかります。しかし数値でもとめられるのでそれをA1形式に変えて表示したい のです。 |
▼けん さん: こう言うことでしょうか。? 使い勝手が悪いと思いますが、良いコーディングではないと思いますが、 一応、要望に答えているのではないですか。 Dim pos As Integer Dim syou As Integer Dim amari As Integer Dim tate_num tate_num = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z") Debug.Print ActiveCell.Offset(0, 0).Column pos = ActiveCell.Offset(0, 0).Column If (pos <= 26) Then Debug.Print tate_num(ActiveCell.Offset(0, -I).Column - 1) Else 'Debug.Print tate_num(pos \ 26 - 1) amari = pos Mod 26 If (amari = 0) Then Debug.Print tate_num(pos \ 26 - 2) Debug.Print tate_num(25) Else Debug.Print tate_num(pos \ 26 - 1) Debug.Print tate_num(amari - 1) End If End If Debug.Printで表示しているので、MsgBoxに変えればダイアログボックスで表示 できます。 |
横から失礼します。 話がかみ合っていないように思うのですが、 これじゃダメだ、ということですね。 Sub test() Dim 行 As Long, 列 As Long 行 = 2 列 = 3 Dim MyString As String Cells(列, 行).Activate MsgBox (ActiveCell.Address) '$が取りたければ MsgBox (Replace(ActiveCell.Address, "$", "")) '列だけ取得したければ MsgBox (Mid(ActiveCell.Address, 2, InStr(2, ActiveCell.Address, "$") - 2)) End Sub |
まだ良く解ってません。 MsgBox ActiveCell.Address(0, 0) MsgBox Left(ActiveCell.Address(1, 0), InStr(ActiveCell.Address(1, 0), "$") - 1) |
今の今まで、RowAbsoluteとColumnAbsoluteの使い方を勘違いしてました。 .Address(0, 0)なんて、よく見る書き方なのに。(T_T)ハズカシイ・・・ |
久蔵さん、ボタンさん、その他のみなさん ありがとうございました。 おかげでできました。 久蔵さんのは、ごみごみしていいて、実用的じゃないような気がします。 ボタンさんのは、簡潔で、一行で処理が出来ています。 ボタンさんみたいに使えるようになるのは、使って見ないといけないのですね。 |
もうご覧になっていないかもしれませんが、 実は、私のやり方も結構無駄が多かったのです。 Jakaさん無駄なコードを省略して投稿なさってるので、 初心者の方には分かりづらいかもしれません。 あえて、無駄なコードをくっ付けてみると、こんな感じです。 Sub test() Dim 行 As Long, 列 As Long 行 = 2 列 = 3 Dim MyString As String Cells(列, 行).Activate MsgBox (ActiveCell.Address) '$が取りたければ 'Addressに引数をつけるだけでよかった '1つ目の0は "B"の前の"$"を取る MsgBox (ActiveCell.Address(0, 0)) '1つ目の0は "3"の前の"$"を取る MsgBox (ActiveCell.Address(0)) '2つ目の0は "B"の前の"$"を取る MsgBox (ActiveCell.Address(, 0)) '列だけ取得したければ '3の前の"$"を残しておいて、そこから後を省く MsgBox (Mid(ActiveCell.Address(, 0), 1, InStr(1, ActiveCell.Address(, 0), "$") - 1)) End Sub |
余計なお世話ですが...。 つっこませていただきます。 逆です。 Cells(列, 行).Activate ↓ Cells(行, 列 ).Activate |
Jakaさん、仰る通りです。(汗 日本語の勉強をし直した方がいいかも・・・。(T_T) |
そんなことないです。 $をつけて表示、$をとって表示、列だけとか等 いろいろ流れが見えて参考になります。 |