プロが教える店舗&オフィスのセキュリティ対策術

エクセルで、例えば
J列は10列目で、
AB列は28列目ですよね。

VBAにて
入力がJだったら10を出力、
ABだったら28を出力
してくれるコードってどう書けばいいのでしょうか?

A 回答 (3件)

一例です。


Sub Retuno()
X = InputBox("列を示す文字列を入力してください。")
Y = Range(X & "1").Column
Z = MsgBox(X & "は" & Y & "です", vbOKOnly)
End Sub
    • good
    • 7
この回答へのお礼

回答ありがとうございます。
エクセルVBAを使うならこの方法が一番シンプルで
良いですね。

お礼日時:2006/08/04 22:08

こんばんは。



>入力がJだったら10を出力
ということは、入力したセルの列番号を数値で出力したいと言うことですね。

シートモジュールに

Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox Target.Column
End Sub

としみてください。
    • good
    • 2
この回答へのお礼

回答ありがとうございます。
>ということは、入力したセルの列番号を数値で出力したいと言うことですね。

そうではなくて、他の方の回答が質問の意図です。

お礼日時:2006/08/04 22:12

こんばんは。



現在のところは、二桁までです。
ユーザー定義関数を作りました。"ZZ" まで、出力可能です。
大文字・小文字は可能ですが、全角は受けないようにしてあります。


Sub Test()
Dim d As Integer
 d = Alpha2Num("AB")
  MsgBox CStr(d)
End Sub


Function Alpha2Num(ByVal arg As String)
 Dim i As Integer
 Dim j As Integer
 arg = StrConv(arg, vbLowerCase)
 If arg Like "[a-z]*" Then
  If Len(arg) = 2 Then
   i = (Asc(Mid(arg, 2, 1)) - 96)
   j = (Asc(Mid(arg, 1, 1)) - 96) * 26
  Else
   i = (Asc(arg) - 96)
  End If
 End If
 Alpha2Num = j + i
End Function
    • good
    • 1
この回答へのお礼

回答ありがとうございます。
このような答えを期待して質問しましたが、エクセルを使うなら
NO1の方の回答がシンプルで良いかも。

お礼日時:2006/08/04 22:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A