tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
R1C1形式をA1形式に変換する関数及びその使用例(VB.NET) ( No.16 )  [親スレッドへ]
日時: 2012/05/29 11:22
名前: VBレスキュー(花ちゃん)

***********************************************************************************
* カテゴリー:[エクセル][][]                                                      *
* キーワード:Excel VBA,Excel2010,R1C1形式,A1形式,セル番地,行番,列番,列数,行数   *
***********************************************************************************
'===================================================================================================
'投 稿 日:2012.05.06
'投 稿 者:VBレスキュー(花ちゃん)
'タイトル:R1C1形式をA1形式に変換する関数及びその使用例
'========1=========2=========3=========4=========5=========6=========7=========8=========9=========0
同様の関数は今までも作っていたのですが、Excel 2007 以降は、列数の Max が 255 →16,384 列 に
変更されたのに伴い、今まで使っていた関数では、702 列("ZZ")までしか対応できませんので、作り
直しました。  旧の関数 http://www.hanatyan.sakura.ne.jp/dotnet/Excel07.htm#no3
但し、18,278 列 ZZZ までの対応となっております。
  
'--------------------------------------------------------------------------------------------------
Private Sub Button14_Click(sender As System.Object, e As System.EventArgs) Handles Button14.Click
'R1C1形式をA1形式に変換する関数の使用例
   Dim R1 As Integer = 10     '行番
   Dim C1 As Integer = 1378   '列番
   'Excel の裏に隠れたりしますので、オーナーウィンドウ(Me)を指定下さい。
  '結果 (10,1378) → ("AZZ10")
   MessageBox.Show(R1.ToString() & " , " & C1.ToString() & " = " & R1ToA1(R1, C1) & " です。")
End Sub

Private Function R1ToA1(ByVal r1 As Integer, ByVal c1 As Integer) As String
'R1C1形式のアドレスをA1形式に変換する関数
   Dim s As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
   Dim A1 As String = ""
   If c1 < 1 Or c1 > 16384 Then
      MessageBox.Show("指定が間違っています。")
      A1 = "A1"
      Return A1
   End If
   If c1 <= 26 Then
      A1 = s.Chars(c1 - 1) & CStr(r1)
   ElseIf c1 <= 702 Then
      A1 = s.Chars(((c1 - 1) \ 26) - 1) & s.Chars(((c1 - 1) Mod 26)) & CStr(r1)
   Else
      A1 = s.Chars(((c1 - 703) \ 676)) & s.Chars((((c1 - 703) \ 26) Mod 26)) & _
                                         s.Chars(((c1 - 1) Mod 26)) & CStr(r1)
   End If
   Return A1
End Function



 [スレッド一覧へ] [親スレッドへ]