ねこになりたい

おふとんと朝の別れをするのが辛い人向けです。正論で殴らず見守ってあげてください。

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

i = 4
Do Until Range("B" & i).Value = "" 'B列が空欄になるまで処理を続行'
Worksheets("目次").Hyperlinks.Add _ 'ワークシート「目次」にハイパーリンクを設定'
Anchor:=Range("B" & i) _ 'B列にハイパーリンクを設定'
, Address:=Range("B" & i).Value & "!A1" '実際にリンクするリンク先を各月のワークシートのセルA1にする'
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