Excelマクロ覚書 ~データ入力・編集編~
図書館で借りてきた某書籍の覚書です。
- 【表全体を選択する】
- 【取得するセル範囲を変更する】
- 【新たな入力セルを選択する】
- 【セルにフリガナを設定する】
- 【ハイパーリンクを設定する】
- 【独自のリストを作成する】
- 【連続するデータを設定する】
- 【リストで入力する】
- 【文字列の一部を取得する】
- 【全角のカタカナに統一する】
- 【アルファベットを大文字に統一する】
- 【バラバラに入力された文字を結合する】
- 【空白の半角/全角を統一する】
【表全体を選択する】
アクティブなセル領域を取得すれば表全体が取得できるので、
CurrentRegionプロパティを使う。
Rangeオブジェクト.CurrentRegion
Range("A3").CurrentRegion.Select
Selection.Borders.LineStyle = xlContinuous
【取得するセル範囲を変更する】
アクティブなセル領域を取得した後で、セル範囲の大きさを変更する。
セル範囲の大きさを変更するにはResizeプロパティを使う。
元のセル範囲.Resize(行数, 列数)
Range("A3").CurrentRegion.Resize(1).Interior.Color = RGB(0, 255, 255)
【新たな入力セルを選択する】
指定した方向の末端のセルを取得したい場合、Endプロパティを使う。
基準となるセル.End(方向)
末端のセル+1で新規入力用のセルが取得できる。
指定した位置から、移動した範囲を取得するにはOffsetプロパティを使う。
基準となるセル.Offset(方向)
※移動先の方向
xlDown | :舌へ |
xlToLeft | :左へ |
xlToRight | :右へ |
xlUp | :上へ |
Range("A3").End(xlDown).Offset(1).Select 'セルA3から下方向に移動し、Offsetプロパティで1行下のセルを取得する'
【セルにフリガナを設定する】
フリガナを設定するには、SetPhoneticプロパティを使う。
Rangeオブジェクト.SetPhonetic
フリガナに設定されているテキストを取得・設定するにはTextプロパティを使う。
Phoneticオブジェクト.Text
フリガナに関する情報を取得するにはPhoneticプロパティを使う。
Rangeオブジェクト.Phonetic
Dim i As Long
i = 4
Do Until Range("B" & i).Value = "" 'B列が空欄になるまで処理を続行'
Range("B" & i).SetPhonetic 'B列の値にフリガナを設定する'
Range("C" & i).Value = Range("B" & i).Phonetic.Text 'C列にB列に設定したフリガナを入力する'
i = i + 1
Loop
【ハイパーリンクを設定する】
ハイパーリンクを取得するには、Hyperlinksプロパティを使う。
Worksheetオブジェクト.Hyperlinks
ハイパーリンクを追加するには、Addメソッドを使う。
Hyperlinksオブジェクト.Add Andhor:= 対象セル, Address:= アドレス, SubAddress:= サブアドレス, TextToDisplay:= 表示テキスト
Dim i As Long
, Address:=Range("B" & i).Value & "!A1" '実際にリンクするリンク先を各月のワークシートのセルA1にする'
i = 4
Do Until Range("B" & i).Value = "" 'B列が空欄になるまで処理を続行'
Worksheets("目次").Hyperlinks.Add _ 'ワークシート「目次」にハイパーリンクを設定'
Anchor:=Range("B" & i) _ 'B列にハイパーリンクを設定'
i = i + 1
Loop
【独自のリストを作成する】
独自のリストを作成するには、AddCustomListプロパティを使う。
Applicationオブジェクト.AddCustomList ListArray:=設定するリスト
Application.AddCustomList ListArray:=Range("D2:D4") 'ユーザーリストに、セルE2~E4のデータを設定する'
【連続するデータを設定する】
児童で連番を振るには、AutoFillプロパティを使う。
Rangeオブジェクト.AutoFill Destination:=セル範囲, Type:= オートフィルの種類
※オートフィルの種類
xlFillCopy |
:【セルのコピー】値と形式をコピーする |
xlFillSeries | :【連続データ】値(連番)をコピーする |
xlFillFormats | :【書式のみコピー(フィル)】書式のみをコピーする |
xlFillValues | :【書式なしコピー(フィル)】値のみをコピーする |
xlFillDays | :【連続データ(日単位)】日単位でコピーする |
xlFillWeekDays | :【連続データ(週日単位)】週日単位でコピーする |
xlFillMonths | :【連続データ(月単位)】月単位でコピーする |
xlFillYears | :【連続データ(年単位)】年単位でコピーする |
xlLinearTrend | :【連続データ(加算)】連続データを加算してコピーする |
xlGrowthTrend | :【連続データ(乗算)】連続データを乗算してコピーする |
xlFillDefault | :【連続データ】規定値を指定してコピーする |
Range("A2").AutoFill Destination:=Range("A3:A8") 'セルA2の値を基準に、セルA3~A8の範囲に連続データでオートフィルを行う'
【リストで入力する】
入力規則の設定をするには、Validationプロパティを使う。
Rangeオブジェクト.Validation
入力規則を追加するには、Addプロパティを使う。
Validationオブジェクト.Add Type:= 入力用の種類, Formula1:=入力する値
入力規則を削除するには、Deleteプロパティを使う。
Validationオブジェクト.Delete
※オートフィルの種類
xlValidateCustom |
:ユーザ設定 |
xlInputOnly | :すべての値 |
xlValidateList | :リスト |
xlValidateWholeNumber | :整数 |
xlValidateDate | :日付 |
xlValidateDecimal | :小数点数 |
xlValidateTextLength | :文字列(長さ指定) |
xlValidateTime | :時刻 |
Range("B4:C8").Validation.Add _ '入力規則を設定'
Type:=xlValidateList _ '入力用の種類にリストを設定'
, Formula1:="川崎支店, 盛岡支点, 仙台支店" '入力する値を設定'
【文字列の一部を取得する】
左側から指定した文字数だけ取得するには、Leftプロパティを使う。
Left(対象のデータ, 文字数)
Dim i As Long
i = 4
Do Until Range("B"& i).Value = ""
Len(Range("B" & i).Value, 2) 'C列(「姓」欄)に、B列のデータのうち左から2文字分のデータを入力'i = i + 1
Loop
指定した位置から指定した文字数だけ取得するには、Mid関数を使う。
Mid(文字列, 開始位置, 文字数)
Dim i As Long
i = 4
Do Until Range("B"& i).Value = ""
Mid(Range("B" & i).Value, 4, 3) 'C列(「姓」欄)に、B列のデータのうち4文字目から3文字目までのデータを入力'i = i + 1
Loop
【全角のカタカナに統一する】
文字列を指定した形式に変換するには、StrConv関数を使う。
StrConv(文字列,変換方法)
※変換方法の種類
xlUpperCase |
:文字列を大文字に変換 |
xlLowerCase | :文字列を小文字に変換 |
xlProperCase | :文字列の各単語の先頭の文字を大文字に変換 |
xlWide | :文字列内の半角文字を全角文字に変換 |
xlNarrow | :文字列内の全角文字を半角文字に変換 |
xlKatakana | :文字列内のひらがなをカタカナに変換 |
xlHiragana | :文字列内のカタカナを平仮名に変換 |
xlUnicode | :文字列をUnicodeに変換 |
Dim i As Long
i = 4
Do Until Range("B"& i).Value = "" 'C列のデータが空欄になるまで処理を繰り返す'
Range("C" & i).Value = _ ''
StrConv(Range("C" & i).Value, vbWide) 'C列のデータを、全角に変換したデータで置き換える'i = i + 1
Loop
【アルファベットを大文字に統一する】
指定した文字を大文字に変換するには、Ucase関数を使う。
Ucase(文字列)
Dim i As Long
i = 4
Do Until Range("B"& i).Value = ""
Range("B" & i).Value = Ucase(Range("B" & i).Value) 'B列のデータを大文字に変換したデータで置き換える'i = i + 1
Loop
【バラバラに入力された文字を結合する】
文字列を連結するには、&演算子を使う。
文字列1 & 文字列2
Dim i As Long
i = 4
Do Until Range("B"& i).Value = ""
Range("D" & i).Value = Range("B" & i).Value & Range("C" & i).Value 'D列のデータをB列とC列のデータを結合した文字で入力する'i = i + 1
Loop
【空白の半角/全角を統一する】
指定した文字を、指定した文字に置き換えるにはReplace関数を使う。
Replace(対象, 検索文字, 置換文字)
Dim i As Long
i = 4
Do Until Range("B"& i).Value = ""
Range("D" & i).Value = Replace(Range("B" & i).Value, " ", " ") 'B列の半角スペースを全角スペースに置き換える'i = i + 1
Loop