変数名によるセルの指定

Cellクラスで、A1,B1のようにA1参照形式でセル指定を行う。

書式1 Public Cell(ByVal cell As String)
書式2 Public Cell(ByVal cell As String, ByVal cx As Integer, ByVal cy As Integer)


セルの値を取得するサンプル

下のExcelの3行目の値を取得したいのですが、変数を使った方法でやってみました が、自分の期待通りとはなりませんでした

**Userという変数を起点に1行下の「JeffBeck」、[5]を取得したい
結果.....
ExcelFile
結果

これは、GetVarNamePosメソッドを利用する事で実現出来ました。

書式 Public Function GetVarNamePos(strVarName As String, nldex As Integer) As System.Drawing.Size
引数 strVarName  : 位置を取得するセル名を指定します。
   nlndex  : 同じ変数名が複数ある場合、取得するインデックスを設定します。

Dim xlsCr As New ExcelCreator.XlsCreator
'ExcelFileを開く
If xlsCr.OpenBook("c:\セル設定.xls") > -1 Then

   '2番目のシートを操作対象とする
   xlsCr.SheetNo = 1

   '**Userのセル位置を取得します
   Dim UserPos As Size = xlsCr.GetVarNamePos("**User", 0)

   '1番目のデータのユーザ名を取得
   Dim UserName As String = xlsCr.Pos(UserPos.Width, UserPos.Height + 1).Str

   '所有数を取得
   Dim Suu As Integer = xlsCr.Pos(UserPos.Width + 1, UserPos.Height + 1).Long

   '閉じる
   '保存して閉じても変数名を設定したセル(**User)には影響を与えない。
   xlsCr.CloseBook(True)

    MessageBox.Show("UserName = " & UserName & vbCrLf & _
                    "Suu = " & Suu.ToString, _
                   "変数名によるセルの指定")

End If
xlsCr.Dispose()

変数名を基点として、他の項目の行位置や列位置を決められるとメリットがあるんですが..
何かやり方があったら教えて下さい。

更に注意点。
CloseBookメソッドの引数Modeに(True)を設定すると、変数名を設定しているセル内容が消えますので注意です。
もし変数名を保持したい場合は、 xlsCr.Cell("**User").Str = "**User" とすればOK。

セルの値を設定するサンプル

B6にLedZeppelin C6に10 を設定します

実行前 実行後
ExcelFile
結果
Dim xlsCr As New ExcelCreator.XlsCreator
'ExcelFileを開く
If xlsCr.OpenBook("c:\セル設定.xls", "") > -1 Then

	'2番目のシートを操作対象とする
    xlsCr.SheetNo = 1

	'タイトルを設定
    xlsCr.Cell("**User").Str = "ユーザ名"
    'ユーザ名を設定
    xlsCr.Cell("**User", 0, 4).Str = "LedZeppelin"
    '所有数を設定
    xlsCr.Cell("**User", 1, 4).Long = 10
    '保存して閉じる
    xlsCr.CloseBook(True)
End If
xlsCr.Dispose()

履歴

2012/01/05
「セルの値を取得するサンプル」を訂正しました
2011/09/25
公開
Loading