過去ログ

                                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」と求めたいのですが。
 ───────────────────────────────────────  ■題名 : Re:セル指定の変数からA1形式を知るには  ■名前 : Jaka  ■日付 : 03/1/20(月) 13:52  -------------------------------------------------------------------------
   こんにちは。
こう言うことでしょうか?

行 = 3: 列 = 2
MsgBox Cells(行, 列).Address(0, 0)
 ───────────────────────────────────────  ■題名 : Re:セル指定の変数からA1形式を知るには  ■名前 : けん  ■日付 : 03/1/20(月) 23:44  -------------------------------------------------------------------------
   ▼Jaka さん:
>こんにちは。
>こう言うことでしょうか?
>
>行 = 3: 列 = 2
>MsgBox Cells(行, 列).Address(0, 0)
説明不足ですみません。
いまどのセルにいるか、どのセルがアクティブになっているかそのセル位置が
わかります。しかし数値でもとめられるのでそれをA1形式に変えて表示したい
のです。
 ───────────────────────────────────────  ■題名 : Re:セル指定の変数からA1形式を知るには  ■名前 : 久蔵  ■日付 : 03/1/20(月) 23:55  -------------------------------------------------------------------------
   ▼けん さん:
こう言うことでしょうか。?
使い勝手が悪いと思いますが、良いコーディングではないと思いますが、
一応、要望に答えているのではないですか。

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に変えればダイアログボックスで表示
できます。
 ───────────────────────────────────────  ■題名 : Re:セル指定の変数からA1形式を知るには  ■名前 : ポンタ  ■日付 : 03/1/21(火) 0:23  -------------------------------------------------------------------------
   横から失礼します。
話がかみ合っていないように思うのですが、
これじゃダメだ、ということですね。

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
 ───────────────────────────────────────  ■題名 : Re:セル指定の変数からA1形式を知るには  ■名前 : Jaka  ■日付 : 03/1/21(火) 10:28  -------------------------------------------------------------------------
   まだ良く解ってません。

MsgBox ActiveCell.Address(0, 0)
MsgBox Left(ActiveCell.Address(1, 0), InStr(ActiveCell.Address(1, 0), "$") - 1)
 ───────────────────────────────────────  ■題名 : Re:セル指定の変数からA1形式を知るには  ■名前 : ポンタ  ■日付 : 03/1/21(火) 13:57  -------------------------------------------------------------------------
   今の今まで、RowAbsoluteとColumnAbsoluteの使い方を勘違いしてました。

.Address(0, 0)なんて、よく見る書き方なのに。(T_T)ハズカシイ・・・
 ───────────────────────────────────────  ■題名 : ありが  ■名前 : けん  ■日付 : 03/1/21(火) 15:36  -------------------------------------------------------------------------
   久蔵さん、ボタンさん、その他のみなさん
ありがとうございました。
おかげでできました。

久蔵さんのは、ごみごみしていいて、実用的じゃないような気がします。
ボタンさんのは、簡潔で、一行で処理が出来ています。

ボタンさんみたいに使えるようになるのは、使って見ないといけないのですね。
 ───────────────────────────────────────  ■題名 : Re:ありが  ■名前 : ポンタ  ■日付 : 03/1/21(火) 16:37  -------------------------------------------------------------------------
   もうご覧になっていないかもしれませんが、
実は、私のやり方も結構無駄が多かったのです。

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
 ───────────────────────────────────────  ■題名 : ポンタさんへ  ■名前 : Jaka  ■日付 : 03/1/21(火) 16:58  -------------------------------------------------------------------------
   余計なお世話ですが...。
つっこませていただきます。
逆です。

Cells(列, 行).Activate
  ↓
Cells(行, 列 ).Activate
 ───────────────────────────────────────  ■題名 : Re:ポンタさんへ  ■名前 : ポンタ  ■日付 : 03/1/21(火) 17:07  -------------------------------------------------------------------------
   Jakaさん、仰る通りです。(汗
日本語の勉強をし直した方がいいかも・・・。(T_T)
 ───────────────────────────────────────  ■題名 : ボタンさんへ  ■名前 : けん  ■日付 : 03/1/21(火) 21:56  -------------------------------------------------------------------------
   そんなことないです。
$をつけて表示、$をとって表示、列だけとか等
いろいろ流れが見えて参考になります。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 579