Excel、現在勉強中です。
できることは多々、増えてきましたが、少しずつ忘れてくる部分があるので基本を少しまとめておくことにしました。
少しわかりにくいかもしれません。
文字列の連結、および、改行
aaa = "□ " & vbCrLf文字列を連結させる場合、VBAでは「&」を使用します。
また、文字列を改行させたい場合、「vbCrLf」を使用します。
横1列のデータを取得
aaa = Range("A1:A10").Value
MsgBox aaa(1, 1)
MsgBox Format(aaa(1, 2), "hh:nn")
MsgBox Format(aaa(1, 3), "hh:nn")「A1:A10」と指定した場合、シートのA1からA10までの情報を取得します。
この際、多次元配列となり、上記変数aaaの1の1にはA1が、1の2にはA2が代入されることとなります。
背景色の変更
Worksheets(sheet).Range("A1").Interior.ColorIndex = 3 ' 赤
Worksheets(sheet).Range("A1").ClearFormats ' これだと罫線まで消える
Worksheets(sheet).Range("A1").Interior.ColorIndex = xlNone ' 透明「sheet」部分にはシート名を入れることで好きなシートの情報を変更することができます。
背景色を透明にする場合、赤色にする場合、罫線も含めクリアにする場合の3パターンになります。
空じゃなかったら判定
If IsEmpty(Range("A1").Value) <> True Then
MsgBox Var
End If「対象項目が空じゃなかったら」というIF判定になります。
もっと良い判定方法があるかもしれません。
まだ0の時どうなるかなど、試せていない部分があります。
文字の入力
Namelist = Worksheets("シート1").Range("A1").Value「Worksheets().」は省略可能です。
指定しない場合、対象のシートが自動で選択されます。
時刻データを取得した際に小数点だった場合
hhnn = Format(Range("A1").Value, "hh:nn")時刻データを取得した際、Excelの内部では「09:00:00」などのデータは小数点の「0.134」のようになって帰ってきます。
この小数点を時刻データとして扱いたい場合はFormat()で指定するとうまくいきます。
検索
Dim aaa As Range
Set aaa = Worksheets("一覧").Range("A1:D30").Find(What:="hoge")
MsgBox aaa.Value
MsgBox aaa.Address
MsgBox aaa.RowFind()を使用すれば条件にマッチする情報を取得することができます。
引数は沢山用意されているので細かい指定が可能です。
また、Value、Address、Rowなどで対象行の取得、値の取得などができます。
ユーザー定義関数
Call addCare()
Sub addCare()
End Subユーザー定義関数を作成する場合、返り値なしで良ければSubで作成可能です。
Callで呼び出します。
引数は指定可能です。
連想配列
Dim aaa As Object
Set aaa = CreateObject("Scripting.Dictionary")
If aaa.Exists(staff1) = True Then
aaa(staff1) = aaa(staff1) + bbb
Else
If IsEmpty(staff1) <> True Then
aaa.add staff1, bbb
End If
End If非常に使い勝手の良い、連想配列の指定方法です。
ObjectをSub外で指定しておけば、ユーザー定義関数でも呼び出すことができます。
連想配列のキーが存在するかどうかは.Exists()、新規で値を代入する場合は.addを使用するなどルールがあるので注意が必要です。
値の引き回しもしてしまう可能性があるので、クリア処理は定期的に入れる必要がありますが、返り値で引き回さないので綺麗なコードが作成できます。
定数の宣言
Public Const sheetTest As String = "シート1"定数は必ず使う、と言って良いほど多用します。
Publicを指定すれば、モジュールが異なっても呼び出すことができるので、別処理でも同じ値を使用したいときに便利です。








コメントを残す