ぱっと思いついた感じだと、
↓の2つ
ExcelVBA
1Private Sub Worksheet_Change(ByVal Target As Range)
2 MsgBox GetAlphabet(Target)
3
4 MsgBox GetAlphabet2(Target.Column)
5End Sub
6
7Private Function GetAlphabet(ByRef rng As Range) As String
8 Dim s As String
9
10 s = rng.EntireColumn.Cells(1).Address(False, False)
11 GetAlphabet = Left(s, Len(s) - 1)
12End Function
13
14Private Function GetAlphabet2(ByRef num As Long) As String
15 Dim s As String
16
17 Do Until num < 1
18 s = Chr(num Mod 26 + 64) & s
19 num = num \ 26
20 Loop
21 GetAlphabet2 = s
22End Function
出来るというだけで、速いとか遅いとかはよくわかりません。(たぶん、どっちでもいいと思うけども)
1つ目の関数は、ターゲットの列の1行目のアドレスを取得して、
??1となるアドレスの1を取り除く
というようなことをしています。
2つ目の関数は、
26で割って行って、余りを文字コードに見立てて文字に変換(Aが65番?なので64を足して微調整)
で26で割った商を、また26で割って余りをまた文字に変換
というのを商が0になるまで繰り返します。
その文字を繋げたら列のアルファベットです。
でも、たぶん、時間を入れるセルを特定したいだけなら、
とりたてて列番号を取得して指定しなくても、
ExcelVBA
1Private Sub Worksheet_Change(ByVal Target As Range)
2 intersect(target.entirerow,me.columns("AI")).value = time
3end sub
みたいな感じで行けると思いますが。。。
アルファベットがどんな時に必要なんだろうか。。。。
参考までにどんなコードを書いてるかお教えください。
こちらも勉強なので。
追記
あぁぁぁぁ。
これでよかった^^;
ExcelVBA
1Private Sub Worksheet_Change(ByVal Target As Range)
2 MsgBox Split(Target.Address, "$")(1)
3End Sub
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。