粗茶でございます日本語 プログラミング 言語 「なでしこ」 大好き 

このページの記事目次 (tag: Excel の検索結果)

total 2 pages  次のページ →  

スポンサーサイト

   ↑  --/--/-- (--)  カテゴリー: スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

(記事編集) http://nadesocha.blog.fc2.com/?overture" target="_new

--/--/-- | Comment (-) | ホーム | ↑ ページ先頭へ ↑ |

切り上げ、切り下げ、切り捨て、四捨五入

   ↑  2013/03/24 (日)  カテゴリー: プログラミング全般
 プログラミングで気になるのは、数値の端数処理です。
 たとえば整数型に小数を入れることができませんので、小数点以下を処理するような場合です。

 そして誰もが疑問に思うのが、マイナス数値の端数を処理したときに、どんな値が得られるのかということです。
 「1.5」の小数点を切り上げたら「2」だけど、「-1.5」の小数点を切り上げたら「-1」なのか「-2」なのか悩みますよね。

 マイナス数値を丸めることについて、少し調べてみましたが、絶対的な答えはでてきませんでした。
 とりあえず、次のようにまとめてみましたので、参考にしてください。

・四捨五入
 処理する数値が0から4ならばゼロ方向に丸める。5から9ならばゼロとは反対の無限大方向に丸める。
・切り上げ(*A)
 正の無限大方向に丸める。
・切り下げ
 負の無限大方向に丸める。
・切り上げ(*B)
 ゼロとは反対の無限大方向に丸める。
・切り捨て
 ゼロ方向に丸める。


 小数第2位を処理して、小数第1位まで求める場合を例に説明します。
・四捨五入
 1.24→1.2
 1.25→1.3
 -1.24→-1.2
 -1.25→-1.3
 エクセルのRound関数と同じです。4以下ならば端数を捨ててしまいます。5以上ならば端数を捨てて、上の位に1を加えます。
 数直線上で-1.24から見てゼロ方向は-1.2です。-1.25から見てゼロとは反対の無限大方向は-1.3です。
 (負)-1.4__-1.3_←_-1.25__-1.24_→_-1.2__-1.1__0__1(正)

・切り上げ(*A)
 1.24→1.3
 1.25→1.3
 -1.24→-1.2
 -1.25→-1.2
 エクセルのCeiling関数と同じです。端数を捨てて、正の無限大方向へ丸めます。
 数直線上で-1.24から見て正の無限大方向は-1.2です。1.24から見て正の無限大方向は1.3です。
 (負)-1.4__-1.3__-1.25_→_-1.24_→_-1.2__-1.1__0__1__1.2__1.24_→_1.25_→_1.3__1.4(正)

・切り下げ
 1.24→1.2
 1.25→1.2
 -1.24→-1.3
 -1.25→-1.3
 エクセルのFloor関数と同じです。端数を捨てて、負の無限大方向へ丸めます。
 数直線上で-1.24から見て負の無限大方向は-1.3です。1.24から見て負の無限大方向は1.2です。
 (負)-1.4__-1.3_←_-1.25_←_-1.24__-1.2__-1.1__0__1__1.2_←_1.24_←_1.25__1.3__1.4(正)

・切り上げ(*B)
 1.24→1.3
 1.25→1.3
 -1.24→-1.3
 -1.25→-1.3
 エクセルのRoundUp関数と同じです。端数を捨てて、ゼロとは反対の無限大方向へ丸めます。
 数直線上で-1.24から見てゼロとは反対の無限大方向は-1.3です。1.24から見てゼロとは反対の無限大方向は1.3です。
 (負)-1.4__-1.3_←_-1.25_←_-1.24__-1.2__-1.1__0__1__1.2__1.24_→_1.25_→_1.3__1.4(正)

・切り捨て
 1.24→1.2
 1.25→1.2
 -1.24→-1.2
 -1.25→-1.2
 エクセルのRoundDown関数と同じです。端数を捨てて、ゼロ方向へ丸めます。
 数直線上で-1.24から見てゼロ方向は-1.2です。1.24から見てゼロ方向は1.2です。
 (負)-1.4__-1.3__-1.25_→_-1.24_→_-1.2__-1.1__0__1__1.2_←_1.24_←_1.25__1.3__1.4(正)


 ここで、切り上げに2通りあることに気づかれたと思います。
 切り上げをするときに、数値を絶対値として扱うか、数直線と同じの大小で扱うかによって結果が違うのです。
 使用しているプログラミング言語によって、どちらが実装されているのか確認する必要がありますね。

 数学においても、マイナスの切り上げについては定義がされていないようです。
 区別するために、「切り上げ(*B)」は「切り入れ」とかにしてもいいのでは?と思います。



スポンサーサイト

この記事に含まれるtag : Excel 

FC2スレッドテーマ : プログラミング (ジャンル : コンピュータ

(記事編集) http://nadesocha.blog.fc2.com/blog-entry-166.html

2013/03/24 | Comment (0) | Trackback (0) | ホーム | ↑ ページ先頭へ ↑ |

Excel VBA 構造体を使った二次元配列

   ↑  2013/01/31 (木)  カテゴリー: Excel
 前回は、VBAで動的二次元配列の作成を紹介しましたが、今回は構造体を使った動的二次元配列の作成方法です。

Option Explicit

'========================================
' 構造体を使った動的二次元配列の作成
'========================================

'列用の配列を作る
Type typeCol
col() As Long
End Type

'行用の配列に列用の配列を入れる
Private row() As typeCol

Public Sub testSample()
Dim idx_row As Long, idx_col As Long
'配列の要素数を仮に宣言しておく
'行と列は別々に宣言する
ReDim row(0)
ReDim row(0).col(0)

For idx_row = 0 To 9
'行の要素数を増やす
'この時点では列の要素数は未定
ReDim Preserve row(idx_row)
For idx_col = 0 To 9
'列の要素数を増やす
ReDim Preserve row(idx_row).col(idx_col)
'配列の指定はArray(x,y)ではなく、
'Array_row(x).Array_col(y)のようになる
row(idx_row).col(idx_col) = idx_row + idx_col
Next idx_col
Next idx_row

For idx_row = 0 To 9
For idx_col = 0 To 9
Cells(idx_row + 1, idx_col + 1) = row(idx_row).col(idx_col)
Next idx_col
Next idx_row
End Sub


result20130131.gif
実行結果


この記事に含まれるtag : Excel VBA 

FC2スレッドテーマ : プログラミング (ジャンル : コンピュータ

(記事編集) http://nadesocha.blog.fc2.com/blog-entry-165.html

2013/01/31 | Comment (1) | Trackback (0) | ホーム | ↑ ページ先頭へ ↑ |

ExcelVBA 二次元配列の行数を動的に変更する

   ↑  2013/01/01 (火)  カテゴリー: Excel
 動的配列を使えば、配列の要素数が増減しても、配列を再定義することで対応できます。
 しかし、二次元配列の場合は少し面倒なことがあります。それは、要素数を変更できるのは2次元目だという点です。

 そこで、二次元配列の1次元目の要素数を変更する関数を作成しました。
 解説は気が向いたらここに追記します。

Option Explicit

Public Sub ArraySample()

Dim myArray As Variant, addArray As Variant
Dim idx_i As Long, idx_j As Long

ReDim myArray(9, 4) '10行5列の2次元配列を宣言
For idx_i = 0 To 9
For idx_j = 0 To 4
'配列に適当なデータを設定
myArray(idx_i, idx_j) = idx_i * 10 + idx_j
Next idx_j
Next idx_i

'5行目にデータを追加
ReDim addArray(4)
For idx_i = 0 To 4
addArray(idx_i) = idx_i + 1000
Next idx_i
Array_Add myArray, addArray, 5

'8行目のデータを削除
Array_Del myArray, 8

'結果をシートに出力
Range(Cells(1, 1), Cells(UBound(myArray, 1) + 1, _
UBound(myArray, 2) + 1)) = myArray

End Sub

Public Sub Array_Add(ByRef inArray As Variant, _
ByVal inValue As Variant, Optional ByVal inRow As Variant)

Dim tmpArray As Variant
Dim idx_tmp As Long
Dim idx_i As Long, idx_j As Long

'inRowは挿入位置
If IsMissing(inRow) Then inRow = UBound(inArray, 1) + 1

'現在の配列内容をコピー
tmpArray = inArray

'配列を再定義
ReDim inArray(UBound(inArray, 1) + 1, UBound(inArray, 2)) '1行追加

'tmpArrayの内容を戻す
idx_tmp = LBound(tmpArray, 1)
For idx_i = LBound(inArray, 1) To UBound(inArray, 1)
If idx_i = inRow Then
'挿入位置にデータを追加
For idx_j = LBound(inValue) To UBound(inValue)
inArray(idx_i, idx_j) = inValue(idx_j)
Next idx_j
Else
'挿入位置でなければそのまま戻す
For idx_j = LBound(tmpArray, 2) To UBound(tmpArray, 2)
inArray(idx_i, idx_j) = tmpArray(idx_tmp, idx_j)
Next idx_j
idx_tmp = idx_tmp + 1
End If
Next idx_i

End Sub

Public Sub Array_Del(ByRef inArray As Variant, _
Optional ByVal inRow As Variant)

Dim tmpArray As Variant
Dim idx_tmp As Long
Dim idx_i As Long, idx_j As Long

'inRowは削除位置
If IsMissing(inRow) Then inRow = UBound(inArray, 1)

'現在の配列内容をコピー
tmpArray = inArray

'配列を再定義
ReDim inArray(UBound(inArray, 1) - 1, UBound(inArray, 2)) '1行削除

'tmpArrayの内容を戻す
idx_tmp = LBound(tmpArray, 1)
For idx_i = LBound(tmpArray, 1) To UBound(tmpArray, 1)
If idx_i <> inRow Then
'削除位置でなければそのまま戻す
For idx_j = LBound(tmpArray, 2) To UBound(tmpArray, 2)
inArray(idx_tmp, idx_j) = tmpArray(idx_i, idx_j)
Next idx_j
idx_tmp = idx_tmp + 1
End If
Next idx_i

End Sub


ArraySampleの実行結果
実行結果


この記事に含まれるtag : Excel VBA 

FC2スレッドテーマ : プログラミング (ジャンル : コンピュータ

(記事編集) http://nadesocha.blog.fc2.com/blog-entry-164.html

2013/01/01 | Comment (0) | Trackback (0) | ホーム | ↑ ページ先頭へ ↑ |

エクセルでデータの最終行や最右列などを調べる

   ↑  2012/04/30 (月)  カテゴリー: Excel
 Excelで、データの数が決まってないとき、どこまでデータが入力されているのか調べる必要があります。
 任意のセルから下の方に空白セルが見つかるまでひとつずつデータがあるか調べたり、終端を示すデータ行まで調べたりしますが、いつも似たようなコードを書くのが面倒なので、関数をつくってみました。

 サンプルのExcelファイルはこちらからダウンロードして下さい。

Function エクセルセル表先頭行取得(ByVal myCell As String) As Long
エクセルセル表先頭行取得 = Range(myCell).CurrentRegion.Row
End Function

Function エクセルセル表末尾行取得(ByVal myCell As String) As Long
Dim myRange As Range
Dim maxRow As Long
Set myRange = Range(myCell).CurrentRegion
maxRow = myRange.Rows.Count
エクセルセル表末尾行取得 = myRange.Cells(maxRow, 1).Row
End Function

Function エクセルセル表左列取得(ByVal myCell As String) As String
Dim Result As String
Dim myRange As Range
Dim myCol_Number As Long
Dim myCol_Address As String
Dim myAdd As String
Set myRange = Range(myCell).CurrentRegion
myCol_Number = myRange.Column '列を数値で示す
myAdd = myRange.Columns(1).Address(True, False)
myCol_Address = Left(myAdd, InStr(myAdd, "$") - 1) '列を文字で示す
' Result = myCol_Number & vbCrLf & myCol_Address
Result = myCol_Number
エクセルセル表左列取得 = Result
End Function

Function エクセルセル表右列取得(ByVal myCell As String) As String
Dim Result As String
Dim myRange As Range
Dim myCol_Number As Long
Dim myCol_Address As String
Dim myAdd As String
Dim maxCol As Long
Set myRange = Range(myCell).CurrentRegion
maxCol = myRange.Columns.Count
myCol_Number = myRange.Cells(1, maxCol).Column '列を数値で示す
myAdd = myRange.Columns(maxCol).Address(True, False)
myCol_Address = Left(myAdd, InStr(myAdd, "$") - 1) '列を文字で示す
' Result = myCol_Number & vbCrLf & myCol_Address
Result = myCol_Number
エクセルセル表右列取得 = Result
End Function

Function エクセルセル先頭行取得(ByVal myCell As String) As Long
Dim myRange As Range
Dim myRow As Long
Set myRange = Range(myCell & "1")
If myRange.Value = "" Then
myRow = myRange.End(xlDown).Row
Else
myRow = 1
End If
エクセルセル先頭行取得 = myRow
End Function

Function エクセルセル末尾行取得(ByVal myCell As String) As Long
Dim myRange As Range
Dim myRow As Long
Set myRange = Range(myCell & Rows.Count)
If myRange.Value = "" Then
myRow = myRange.End(xlUp).Row
Else
myRow = Rows.Count
End If
エクセルセル末尾行取得 = myRow
End Function

Function エクセルセル左列取得(ByVal myCell As Long) As String
Dim Result As String
Dim myRange, leftRange As Range
Dim myCol_Number As Long
Dim myCol_Address As String
Dim myAdd As String
Set myRange = Range("A" & myCell)
If myRange.Value = "" Then
Set leftRange = myRange.End(xlToRight)
myCol_Number = leftRange.Column '列を数値で示す
myAdd = leftRange.Columns(1).Address(True, False)
myCol_Address = Left(myAdd, InStr(myAdd, "$") - 1) '列を文字で示す
' Result = myCol_Number & vbCrLf & myCol_Address
Result = myCol_Number
Else
' Result = "1" & vbCrLf & "A"
Result = "1"
End If
エクセルセル左列取得 = Result
End Function

Function エクセルセル右列取得(ByVal myCell As Long) As String
Dim Result As String
Dim myRange, rightRange As Range
Dim myCol_Number As Long
Dim myCol_Address As String
Dim myAdd As String
Set myRange = Cells(myCell, Columns.Count)
If myRange.Value = "" Then
Set rightRange = myRange.End(xlToLeft)
myCol_Number = rightRange.Column '列を数値で示す
myAdd = rightRange.Columns(1).Address(True, False)
Else
myCol_Number = Columns.Count '列を数値で示す
myAdd = myRange.Address(True, False)
End If
myCol_Address = Left(myAdd, InStr(myAdd, "$") - 1) '列を文字で示す
' Result = myCol_Number & vbCrLf & myCol_Address
Result = myCol_Number
エクセルセル右列取得 = Result
End Function

Function エクセルセル表エリア取得(ByVal myCell As String) As String
Dim Result As String
Result = エクセルセル表先頭行取得(myCell) & "," & _
エクセルセル表左列取得(myCell) & "," & _
エクセルセル表末尾行取得(myCell) & "," & _
エクセルセル表右列取得(myCell)
'左上のrow,col,右下のrow,col
エクセルセル表エリア取得 = Result
End Function

Function エクセルセル表サイズ取得(ByVal myCell As String) As String
Dim myRange As Range
Set myRange = Range(myCell).CurrentRegion
'行数,列数
エクセルセル表サイズ取得 = myRange.Rows.Count & "," & myRange.Columns.Count
End Function


・エクセルセル表先頭行取得
 任意のセルを含むデータ領域の先頭行番号を数値で返します。
・エクセルセル表末尾行取得
 任意のセルを含むデータ領域の末尾行番号を数値で返します。
・エクセルセル表左列取得
 任意のセルを含むデータ領域の左端列番号を数値で返します。
・エクセルセル表右列取得
 任意のセルを含むデータ領域の右端列番号を数値で返します。
・エクセルセル先頭行取得
 任意の列で先頭にあるデータの行番号を数値で返します。
・エクセルセル末尾行取得
 任意の列で末尾にあるデータの行番号を数値で返します。
・エクセルセル左列取得
 任意の行で左端にあるデータの列番号を数値で返します。※文字で返すこともできます。
・エクセルセル右列取得
 任意の行で右端にあるデータの列番号を数値で返します。※文字で返すこともできます。
・エクセルセル表エリア取得
 任意のセルを含むデータ領域の左上セルの行番号と列番号と右下セルの行番号と列番号を数値で返します。
・エクセルセル表サイズ取得
 任意のセルを含むデータ領域の行数と列数を数値で返します。

 実際の動作は、サンプルファイルにあるマクロ「Test_All」を実行してみてください。

 これをベースにして、なでしこ2.0のエクセルプラグインをつくっていきます。
 うーん、もうちょっとスマートにできると思うので、実装するときは改良する必要がありますね。

この記事に含まれるtag : Excel VBA 

FC2スレッドテーマ : プログラミング (ジャンル : コンピュータ

(記事編集) http://nadesocha.blog.fc2.com/blog-entry-145.html

2012/04/30 | Comment (0) | Trackback (0) | ホーム | ↑ ページ先頭へ ↑ |

エクセルプラグインの作成

   ↑  2012/04/29 (日)  カテゴリー: なでしこ全般
 現在、なでしこ2.0向けのエクセルプラグインを作成中なのですが、これがなかなか手強くて、また私の勉強不足もあって、うまい解決がみつかりません。

 現在のところ、実装しているのは次の命令です。

' アプリケーション
・エクセルインストールチェック Excelがインストールされているか調べる。(1:インストールされている、0:インストールされていない)
・エクセル起動 FLAGで|FLAGに|FLAGへ Excelを起動する。(FLAG=1:可視、FLAG=0:不可視で起動)
・エクセル終了 Excelを終了する。ブックは保存しない。
・エクセル起動取得 Excelが起動しているか調べる。(1:起動している、0:起動していない)
・エクセルバージョン取得 Excelのバージョンを取得する。
・エクセル可視設定 FLAGで|FLAGに|FLAGへ Excelの可視を設定する。(FLAG=1:可視、FLAG=0:不可視)
・エクセル可視取得 Excelの可視を取得する。(1:可視、0:不可視で起動)
・エクセル警告設定 FLAGで|FLAGに|FLAGへ Excelの警告表示を設定する。(FLAG=1:警告あり、FLAG=0:警告なし)
・エクセル警告取得 Excelの警告表示を取得する。(1:警告あり、0:警告なし)
・エクセル窓設定 STATEで|STATEに|STATEへ Excelのウィンドウ状態を設定する。(STATE=『最大化|最小化|標準』)
・エクセル窓取得 Excelのウィンドウ状態を取得する。(『最大化|最小化|標準』)
・エクセルタイトル設定 TITLEで|TITLEに|TITLEへ ExcelのウィンドウタイトルをTITLEに設定する。
・エクセルタイトル取得 Excelのウィンドウタイトルを取得する。
・エクセルステータスバー設定 STRINGで|STRINGに|STRINGへ ExcelのステータスバーをSTRINGに設定する。STRING=「」の時、ステータスバーを標準にする。
・エクセルステータスバー取得 Excelのステータスバーを取得する。
・エクセルステータスバー可視設定 FLAGで|FLAGに|FLAGへ Excelのステータスバーの可視を設定する。(FLAG=1:可視、FLAG=0:不可視)
・エクセルステータスバー可視取得 Excelのステータスバーの可視を取得する。
・エクセル画面更新設定 FLAGで|FLAGに|FLAGへ Excelの画面更新を設定する。(FLAG=1:画面更新あり、FLAG=0:画面更新なし)
・エクセル画面更新取得 Excelの画面更新を取得する。(1:画面更新あり、0:画面更新なし)
' ブック
・エクセルブック追加 Excelに新規ブックを追加する。
・エクセルブック開く FILEを|FILEの|FILEで|FILEから Excelにファイル名を指定してブックを開く。
・エクセルブック保存 FILEを|FILEの|FILEで|FILEへ|FILEに ファイル名を指定して現在のブックを保存する。FILEを省略すると現在のブックを上書き保存する。
・エクセルブックマクロ可能取得 アクティブブックでなでしこからマクロ(VBA)が利用できるか調べる。(1:利用可能、0:利用不可)
・エクセルブック閉じる アクティブブックを保存しないで閉じる。
・エクセルブック保存後閉じる アクティブブックを上書き保存して閉じる。
・エクセルブック変更保存設定 FLAGへ|FLAGに|FLAGで アクティブブックを変更後保存したか設定する。(FLAG=1:変更していないか変更して保存した、FLAG=0:変更したが保存していない)
・エクセルブック変更保存取得 アクティブブックを変更後保存したか取得する。(1:変更していないか変更して保存した、0:変更したが保存していない)
・エクセルブック列挙 開いているブック名を列挙する。
・エクセルブックアクティブ設定 BOOKを|BOOKの|BOOKへ|BOOKで ブックをアクティブにする。(BOOK:ブック名)
・エクセルブックアクティブ取得 アクティブなブック名を取得する。
' シート
・エクセルシート枠線可視設定 FLAGで|FLAGに|FLAGへ Excelのシートの枠線の可視を設定する。(FLAG=1:可視、FLAG=0:不可視)
・エクセルシート枠線可視取得 Excelのシートの枠線の可視を取得する。(1:可視、0:不可視)
' セル
・エクセルセルA1形式変換 CELLSの|CELLSを|CELLSで|CELLSから 「row,col」をA1形式のセル番地に変換する。(row:行番号、col:列番号)
・エクセルセル行番号取得 RANGEの|RANGEを|RANGEで|RANGEから セル番地「RANGE」の行番号を取得する。(RANGE:A1形式のセル番地)
・エクセルセル列番号取得 RANGEの|RANGEを|RANGEで|RANGEから セル番地「RANGE」の列番号を取得する。(RANGE:A1形式のセル番地)
・エクセルセル値取得 RANGEの|RANGEを|RANGEで|RANGEから セル番地「RANGE」の値を取得する。範囲指定しても左上のセルのみが対象。(RANGE:A1形式のセル番地)
・エクセルセル値設定 RANGEへ|RANGEにVALUEを|VALUEで セル番地「RANGE」にVALUEを設定する。範囲指定しても左上のセルのみが対象。(RANGE:A1形式のセル番地)
・エクセルセル式取得 RANGEの|RANGEを|RANGEで|RANGEから セル番地「RANGE」の式を取得する。範囲指定しても左上のセルのみが対象。(RANGE:A1形式のセル番地)
・エクセルセル式設定 RANGEへ|RANGEにEXPを|EXPで セル番地「RANGE」に式「EXP」を設定する。範囲指定しても左上のセルのみが対象。(RANGE:A1形式のセル番地)
・エクセルセル文字取得 RANGEの|RANGEを|RANGEで|RANGEから セル番地「RANGE」の値を文字列として取得する。値を表示形式のまま取得する。範囲指定しても左上のセルのみが対象。(RANGE:A1形式のセル番地)
・エクセルセル文字設定 RANGEへ|RANGEにTEXTを|TEXTで セル番地「RANGE」に文字列「TEXT」を設定する。文字列の前に「'」が付く。範囲指定しても左上のセルのみが対象。(RANGE:A1形式のセル番地)
・エクセルセルシリアル値取得 RANGEの|RANGEを|RANGEで|RANGEから セル番地「RANGE」のシリアル値を取得する。範囲指定しても左上のセルのみが対象。(RANGE:A1形式のセル番地)
・エクセルセルシリアル値設定 RANGEへ|RANGEにVALUEを|VALUEで セル番地「RANGE」にシリアル値「VALUE」を設定する。範囲指定しても左上のセルのみが対象。(RANGE:A1形式のセル番地)
・エクセルセル値範囲取得 RANGE_LTから|RANGE_LTよりRANGE_RBまで|RANGE_RBへ|RANGE_RBを|RANGE_RBの|RANGE_RBで セル番地「RANGE_LT:RANGE_RB」の値を範囲取得する。(RANGE_LT:A1形式の左上セル番地、RANGE_RB:A1形式の右下セル番地)
・エクセルセル値範囲設定 RANGEへ|RANGEにVALUEを|VALUEで セル番地「RANGE」にVALUEを範囲設定する。(RANGE:A1形式のセル番地、VALUE:配列)
・エクセルセル式範囲取得 RANGE_LTから|RANGE_LTよりRANGE_RBまで|RANGE_RBへ|RANGE_RBを|RANGE_RBの|RANGE_RBで セル番地「RANGE_LT:RANGE_RB」の式を取得する。(RANGE_LT:A1形式の左上セル番地、RANGE_RB:A1形式の右下セル番地)
・エクセルセル式範囲設定 RANGEへ|RANGEにEXPを|EXPで セル番地「RANGE」に式「EXP」を設定する。(RANGE:A1形式のセル番地、EXP:配列)
・エクセルセル文字範囲取得 RANGE_LTから|RANGE_LTよりRANGE_RBまで|RANGE_RBへ|RANGE_RBを|RANGE_RBの|RANGE_RBで セル番地「RANGE_LT:RANGE_RB」の式を取得する。(RANGE_LT:A1形式の左上セル番地、RANGE_RB:A1形式の右下セル番地)
・エクセルセル文字範囲設定 RANGEへ|RANGEにTEXTを|TEXT セル番地「RANGE」に文字列「TEXT」を設定する。(RANGE:A1形式のセル番地、TEXT:配列)

 とりあえず、かんたんなものから実装していますが、下記の問題が未解決です。

1.関数(命令)の名前が冗長すぎる
 ごらんのとおり、関数はかならず「エクセル」で始まります。次に対象のオブジェクト「シート」や「セル」が続いて、処理名となります。そのため、「エクセルセル値取得」のように、どうしても長い名前になってしまいます。
 すっきりさせるために、省略形を使ったり、命名ルールを無視するようなことはしたくありません。
2.プロパティとしての関数がほしい
 たとえば、「エクセルセル値取得」と「エクセルセル値設定」の関数のように、データを取得する関数と、データを設定する関数の2種類が必要です。
 ほんとうは、
   「A1」のエクセルセル値を表示
   「A1」のエクセルセル値は「愛」
 という感じに、ひとつの関数で取得と設定を行いたいのですが、プロパティ的な関数の作成方法がわかりません。
3.二次元配列の未実装
 なでしこ2.0には、まだ二次元配列が実装されていません。
 セルの範囲設定や範囲取得がもっと効率よくできればいいのですが。

 このうち、2と3はクジラさんに要望していますが、1だけは頭がイタイところです。
 関数名のわかりやすさを取るか、キータイプのしやすさを取るか、あなたならどっち!?

 なお、開発中のエクセルプラグインのVBプロジェクトはこちらです。VisualStudio2010で開発していますプラグインの様式変更により使用できません。

この記事に含まれるtag : なでしこ2.0 プラグイン Excel 

FC2スレッドテーマ : プログラミング (ジャンル : コンピュータ

(記事編集) http://nadesocha.blog.fc2.com/blog-entry-144.html

2012/04/29 | Comment (0) | Trackback (0) | ホーム | ↑ ページ先頭へ ↑ |
申し訳ありません。 お探しの記事は現在、この ユーザーtag (Keyword) を設定していない可能性があります。 右の検索BOXで 再度用語を短めに入力していただくと記事が見つかる場合があります。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。