[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2004/08/19(Thu) 16:02
投稿者名:あべる
URL :
タイトル:
Excelの列名の取得(変換?)
いつも勉強させていただき、ありがとうございます

現在、Excel(Win2000 / Office2000)からDBへ
ぐるぐる回して登録するプログラムを作成しているのですが
「エラーがあった場合、「何行目の何列か?」を表示してほしい」との要望で
何も考えずに「わかりました」と答えてしまい困っております

ぐるぐる回しているため当然、値の取得は「Cells」を使用していますので

WorkSheet.Cells(10,12)

この12って何列なのでしょう?

指折り数えればわかるのでしょうが、このColumn値を「L列」という様に
変換する関数等はあるのでしょうか?

もしくは、ActiveCellの位置を"L12"の様な戻り値を返す関数はあるのでしょうか?

ご回答、よろしくお願いいたします

投稿時間:2004/08/19(Thu) 16:42
投稿者名:KNSN
Eメール:
URL :
タイトル:
Re: Excelの列名の取得(変換?)
> この12って何列なのでしょう?

1→A
2→B
3→C
つまり、セルの左から1,2,3,...となっています。


ActiveCellの位置を"L12"の様な戻り値を返す関数があるかどうかわかりませんが
10進法を26進法に変換する関数を自作すればなんとかなると思います。

何かスマートな方法が他にあればどなたかお願いします。

投稿時間:2004/08/19(Thu) 17:08
投稿者名:あべる
URL :
タイトル:
Re^2: Excelの列名の取得(変換?)
KNSNさま、ご回答ありがとうございます

やはり、指折り数えないとだめなんでしょうかね?

とりあえず、自力で算出モジュールは作りました

スマートな方法お待ちしております

'***********************************************************************
' Column変換
'***********************************************************************
Public Function ED_ColNo(IN_Col As Integer) As String
Dim str1    As String
Dim str2    As String

    str1 = WKED_ColNo(Fix(IN_Col / 26))
    
    If IN_Col Mod 26 <> 0 Then
        str2 = WKED_ColNo(IN_Col Mod 26)
    End If
    
    ED_ColNo = str1 & str2
    
End Function

Public Function WKED_ColNo(IN_Col As Integer) As String
Select Case IN_Col
Case 0:     WKED_ColNo = ""
Case 1:     WKED_ColNo = "A"
Case 2:     WKED_ColNo = "B"
Case 3:     WKED_ColNo = "C"
Case 4:     WKED_ColNo = "D"
Case 5:     WKED_ColNo = "E"
Case 6:     WKED_ColNo = "F"
Case 7:     WKED_ColNo = "G"
Case 8:     WKED_ColNo = "H"
Case 9:     WKED_ColNo = "I"
Case 10:    WKED_ColNo = "J"
Case 11:    WKED_ColNo = "K"
Case 12:    WKED_ColNo = "L"
Case 13:    WKED_ColNo = "M"
Case 14:    WKED_ColNo = "N"
Case 15:    WKED_ColNo = "O"
Case 16:    WKED_ColNo = "P"
Case 17:    WKED_ColNo = "Q"
Case 18:    WKED_ColNo = "R"
Case 19:    WKED_ColNo = "S"
Case 20:    WKED_ColNo = "T"
Case 21:    WKED_ColNo = "U"
Case 22:    WKED_ColNo = "V"
Case 23:    WKED_ColNo = "W"
Case 24:    WKED_ColNo = "X"
Case 25:    WKED_ColNo = "Y"
Case 26:    WKED_ColNo = "Z"
End Select

End Function

投稿時間:2004/08/19(Thu) 17:22
投稿者名:PE-
Eメール:
URL :
タイトル:
Re^3: Excelの列名の取得(変換?)
Chr$を使用すればスマートになるのでは・・
試してないのでわかりませんが。。。

文字コードを使用する場合の注意事項はヘルプを参照してください。

投稿時間:2004/08/19(Thu) 18:40
投稿者名:あべる
URL :
タイトル:
Re^4: Excelの列名の取得(変換?)
PE−さん、ご回答ありがとうございます

おおおっ確かにずっとスマートに・・・

スマートになったサブ
'***********************************************************************
' Column変換
'***********************************************************************
Public Function ED_ColNo(IN_Col As Integer) As String
Dim str1    As String
Dim str2    As String

    If IN_Col > 26 Then
        If IN_Col Mod 26 = 0 Then
            str1 = Chr$(65 + (Fix((IN_Col - 1) / 26)) - 1)
        Else
            str1 = Chr$(65 + (Fix(IN_Col / 26)) - 1)
        End If
    Else
        str1 = ""
    End If
    
    If IN_Col Mod 26 <> 0 Then
        str2 = Chr$(65 + (IN_Col Mod 26) - 1)
    Else
        str2 = Chr$(65 + 25)
    End If
    
    ED_ColNo = str1 & str2
    
End Function

投稿時間:2004/08/19(Thu) 18:25
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: Excelの列名の取得(変換?)
下記ではどうですか?

    Dim A1Cell As String
    A1Cell = xlSheet.Cells(14, 10).Address

    '$J$14 の $ が気になるなら下記で削除できます。
    A1Cell = Replace(A1Cell, "$", "")
    Debug.Print A1Cell


>とりあえず、自力で算出モジュールは作りました

の方法なら旧の掲示板の No.3624 や No.4625 に出ていますよ。
Excel & Word 関係の Excel & Word 関係過去のQ&A一覧表(110KB あり少し重い)の
方でも見られます。

投稿時間:2004/08/19(Thu) 18:52
投稿者名:あべる
URL :
タイトル:
Re^2: Excelの列名の取得(変換?)
花ちゃんさん(なんか変)ご回答ありがとうございました


>     A1Cell = xlSheet.Cells(14, 10).Address

「Address」っていうのがあるんですね
ありがとうございました


>
> >とりあえず、自力で算出モジュールは作りました
>
> の方法なら旧の掲示板の No.3624 や No.4625 に出ていますよ。
> Excel & Word 関係の Excel & Word 関係過去のQ&A一覧表(110KB あり少し重い)の
> 方でも見られます。

すみません、見つけれませんでした・・・
って、しかも、5ステップ・・・
頭ひねったソースも1/5に・・・

もっと修行します!

皆様、ご回答ありがとうございました

投稿時間:2004/08/19(Thu) 19:30
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^2: Excelの列名の取得(変換?)
>     Dim A1Cell As String
>     A1Cell = xlSheet.Cells(14, 10).Address
>     '$J$14 の $ が気になるなら下記で削除できます。
>     A1Cell = Replace(A1Cell, "$", "")
>     Debug.Print A1Cell

Addrssメソッドの第1/第2引数に False を指定する、という手もあります。

投稿時間:2004/08/19(Thu) 19:50
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: Excelの列名の取得(変換?)
> Addrssメソッドの第1/第2引数に False を指定する、という手もあります。

引数までは気がつきませんでした。

MsgBox "セル " & xlSheet.Cells(i, j).Address(False, False) & " でエラーが発生しました"

投稿時間:2004/08/20(Fri) 10:17
投稿者名:あべる
URL :
タイトル:
Re^3: Excelの列名の取得(変換?)
魔界の仮面弁士さん、ご回答ありがとうございました

がんばるっす