2015年4月13日月曜日

行・列の非表示と再表示

行を非表示にする為には、行全体のRangeオブジェクトのHiddenプロパティにTrueを設定
する :

行Rangeオブジェクト.Hidden = True

非表示になった行を再表示する為には、HiddenプロパティにFalseを設定する :

行Rangeオブジェクト.Hidden = False

例えば、Activesheetの20~26行目を非表示にする場合は、

Activesheet.Rows("20:26").Hidden = True

再表示するには

Activesheet.Rows("20:26").Hidden = False

とそれぞれ記述する。列の場合についても同様に、非表示、再表示はそれぞれ下記の通り :

列Rangeオブジェクト.Hidden = True
 
列Rangeオブジェクト.Hidden = False




行・列の削除

行を削除するには、(前項の)取得した行全体のRangeオブジェクトのDeleteメソッドを使用
する :

取得した行Rangeオブジェクト.Delete

例えば、Activesheetの20~26行目を削除する場合は

Activesheet.Rows("20:26").Delete

と記述する。列の削除も同様に、

取得した列Rangeオブジェクト.Delete

で列全体を削除することができる。ActivesheetのA~G列を削除する場合は

Activesheet.Columns("A:G").Delete

と記述することで列を削除することができる。 

2015年4月12日日曜日

行・列の取得

ワークシートの行全体を取得する場合は

Set Range変数 = Worksheetオブジェクト.Rows()

と記述する。20行目のみを取得する場合は

Set rng = Activesheet.Rows("20")

20~26行目を取得する場合は

Set rng = Activesheet.Rows("20:26")
 
と、それぞれ記述する(rngRange変数)。また、列全体を取得する場合は

Set Range変数 = Worksheetオブジェクト.Columns()

と記述する。行の場合同様、A列のみ取得する場合は

Set rng = Activesheet.Columns("A")

A~G列を取得する場合は

Set rng = Activesheet.Columns("A:G")

と、それぞれ記述する(rngRange変数)

2015年4月11日土曜日

セルのシリアル値の取得

日付の場合、1900年1月1日を「1」として、以降1日につき1ずつ加算した値をシリアル値
という。例えば、2015年4月10日のシリアル値は「42104」となる。このシリアル値を(使う
場面はそれ程ないが)を取得するにはRangeオブジェクトのValue2プロパティを使用する :

変数 = Rangeオブジェクト.Value2

尚、Value2プロパティに値を設定することも可能だが、

Range("B10").Value2 = 42104

としても、セルには日付が表示されず、数字の「42104」が表示される。また、文字列や
数値の場合はValueプロパティの値とValue2プロパティの値は同一となる。

2015年4月10日金曜日

セルに表示されている値の取得

数値や日付の場合、セルに設定されている値と表示されている内容が異なる場合がある。
例えば、下図のように、小数点以下の桁数を二ケタまでしか表示していないセルがあった
とすると、設定されている値と表示されている数字は異なったものとなる :
















上記の場合のように、セルに表示されている内容を知りたい場合は、Rangeオブジェクト
Textプロパティを使用する :

変数 = Rangeオブジェクト.Text

上の例の場合、Textプロパティで取得される値は「1.24」、Valueプロパティの値は「1.235」
である。尚、Textプロパティは読み取り専用のプロパティなので、値を代入することはでき
ないので要注意。因みに、文字列の場合は、試してみた限りではValueプロパティとText
プロパティで取得できる値は同じであった。

セルへの値の設定と取得

セルに値を設定する場合は、RangeオブジェクトのValueプロパティを使用する :

Rangeオブジェクト.Value =

逆に設定された値を取得したい場合もValueプロパティを使用する :

変数 = Rangeオブジェクト.Value

セルの値の設定と取得をするサンプルコードを下記に記す。

Sub SampleSetAndGetRangeValue
     Range("B2").Value = "abcdefghijklmnopqrstuvwxyz"
     MsgBox Range("B2").Value
End Sub

上記コードの実行結果、メッセージボックスにはaからzの英小文字の羅列
が表示される。

セルの取得

ひとつのセル(オブジェクト)を取得するには下記の二通りの書き方がある :

Set Range変数 = Worksheetオブジェクト.Range(アドレス)
Set Range変数 = Worksheetオブジェクト.Cells(RowIndex, ColumnIndex)

前者の記述の方法の場合、ひとつのセルを取得する場合は

Application.Activesheet.Range("A1")

のように記述する。A1セルからF6セルまで、のようにセルを範囲で取得したい場合は

Application.Activesheet.Range("A1:F6")

と記述する。