【VBA】よく使うやつコピペ用

スポンサーリンク  

 

~心得~

 

・長くても分かりやすい方がいい(短縮で書きまくって、分かりにくい&メンテしづらいのはダメ)

・メッセージボックスや、コメントアウトは適宜書く

・処理が長いものはマクロとして独立させることも考える

 

ブック操作

 

ブックを開く

Workbooks.Open Filename:=”C:\Users\user1\Desktop\勤務表.xlsx”

 

ユーザに任意のブックを開いてもらう

MsgBox “sourceシートに張り付けるブックを選択してください。”
Dim OpenFileName As String
OpenFileName = Application.GetOpenFilename(“CSV,*.csv,XLS,*.xls,XLSM,*.xlsm,XLSX,*.xlsx”)

If OpenFileName <> “False” Then
Workbooks.Open OpenFileName
End If

 

今開いているブックを閉じる

ActiveWindow.Close

 

指定したブックを閉じる

Workbooks(“勤務表.xlsx”).Close

 

セルに文字を入力する

 

シートを選択する

Sheets(“Sheet1”).Select

 

セルを選択する

Range(“A1”).Select
Range(“A1:A10”).Select

 

セルに文字を入力する

Range(“A1”) = “あいうえお”

 

<省略するとこうなる>

Sheets(“Sheet1”).Range(“A1”) = “あいうえお”

 

コピペ系

 

コピーする

Range(“A1:B10”).Copy Range(“C1:D10”)
Worksheets(“コピー元”).Range(“A1:B10”).Copy Worksheets(“コピー先”).Range(“A1:B10”)

 

値だけ貼り付け

Range(“C1:D10”).Value = Range(“A1:B10”).Value
Worksheets(“コピー先”).Range(“A1:B10”).Value = Worksheets(“コピー元”).Range(“A1:B10”).Value
※イコールを使うときは、左側がコピー先となるので注意。

 

コピーモードを解除する

Application.CutCopyMode = False
※コピー、張り付けの後は解除しておきましょう。「膨大な量をコピーしています!」みたいなメッセージが出なくなります。

 

削除系

 

値の削除

Range(1 & “:” & LastRow).Delete

 

セル削除、左詰め

Range(“A10:C15”).Select
Selection.Delete Shift:=xlToLeft

 

セル削除、上詰め

Range(“A10:C15”).Select
Selection.Delete Shift:=xlUp

 

列削除

Columns(“C:C”).Delete Shift:=xlToLeft
Columns(“C:E”).Delete Shift:=xlToLeft

 

行削除

Rows(“2:2”).Delete Shift:=xlUp
Rows(“2:5”).Delete Shift:=xlUp

 

挿入系

 

セル挿入、右方向にズらす

Range(“A10:A15”).Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

 

セル挿入、下方向にズらす

Range(“A10:A15”).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

 

今月、先月をMMで取得する

 

今月をMMで取得する

日付 = Date
今月 = Format(日付, “mm”)
MsgBox 今月

 

先月をMMで取得する

先月1日 = Month(Date) – 1 & “/1”
先月 = Format(先月1日, “mm”)
MsgBox 先月

 

最終行、最終列を取得する

 

最終行を取得する

MaxRow = Cells(Rows.Count, 1).End(xlUp).Row
MsgBox MaxRow
※データに抜けがなければ使える
※「1」はA列を指している

MaxRow = Worksheets(“コピー元”).Cells(Rows.Count, 11).End(xlUp).Row
MsgBox MaxRow
※データに抜けがない行があればそこを指定する。「11」はK列を指している。

 

最終列を取得する

MaxCol = Cells(1, Columns.Count).End(xlToLeft).Column
MsgBox MaxCol
※データに抜けがなければ使える
※「1」は1行目を指している

MaxCol = Cells(7, Columns.Count).End(xlToLeft).Column
MsgBox MaxCol
※データに抜けがない行があればそこを指定する。「7」は7行目を指している。

 

最終行を取得したときの書き方

MaxRow = Worksheets(“source”).Cells(Rows.Count, 4).End(xlUp).Row
RA = “A10:” & “C” & MaxRow
Range(RA).Select

※D列で最終行を取得できるなら使える

 

他シートを参照する

 

他シートから転記する

Windows(“勤務表6月.xlsx”).Activate
Sheets(“取り込み元”).Select
Cells.Copy
Windows(“勤務表年間.xlsx”).Activate
Sheets(“取り込み先”).Select
Cells.Select
ActiveSheet.Paste

 

ブック名を取得する

ThisBook = ActiveWorkbook.Name
MsgBox ThisBook
Windows(ThisBook).Activate

 

複数マクロを一括して実行する

 

Sub ★ALL()
Call a_既存データ削除
Call b_取り込み
Call c_整形処理
End Sub

 

メッセージボックスを出す

 

MsgBox “データシートをクリアします”

※処理の前に「~を実行します。」、処理の後に「~を実行しました。」と書く。

※処理が長ければ、「所要時間は約●分です。」と書く。

 

フォントいじる系

 

文字位置を上寄せ

Range(“A10:D10”).VerticalAlignment = xlTop

 

文字位置を左寄せ

Range(“A10:C15”).HorizontalAlignment = xlLeft

 

<一括でやるならこう>

Range(“A10:D15”).Select
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlTop
End With

 

折り返して表示

Range(“A10:D10”).WrapText = True

 

折り返して表示の解除

Range(“A10:D10”).WrapText = False

 

フォントを変更する

Range(“A10:C15”).Font.Name = “Meiryo UI”

 

文字サイズを変更する

Range(“A10:C15”).Font.Size = 9

 

<色々一緒にやるとこんな感じ>

Range(“A10:D15”).Select
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlTop
.WrapText = True
.Font.Name = “Meiryo UI”
.Font.Size = 15
End With

※短縮して書けます。

 

一番左にスクロールしておく

 

ActiveWindow.ScrollColumn = 1

A1へセルを戻しておく
Range(“A1”).Select

 

先月の1日0:00を出力する

 

Sub 前月~今日までを期間とする()

先月年 = Year(Date)
先月月 = Month(Date) – 1 & “/1”
先月日 = Format(先月月, “mm”)
先月1日 = “01”
先月曜日 = “(” & WeekdayName(Weekday(先月月), True) & “)”
先月時刻 = “0:00”

今日 = Date
今日曜日 = “(” & WeekdayName(Weekday(Date), True) & “)”
今日日時 = Hour(Time) & “:00”

開始 = 先月年 & “/” & 先月日 & “/” & 先月1日 & 先月曜日 & 先月時刻
終了 = 今日 & 今日曜日 & 今日日時

Range(“C3″) = 開始 & ” ~ ” & 終了

Range(“C4″) = 終了 & ” 時点”

End Sub

 

<出力結果>

C3:2019/06/01(土)0:00 ~ 2019/07/04(木)11:00

C4:2019/07/04(木)11:00 時点

 

先頭を0で埋める

 

Sub コードの桁揃え()

‘C列にデータ抜けがないため、その行で最終行を取得する。
‘実際に5ケタにするのはA列(A1から下方向へ)
Dim i As Long
MaxRow = Range(“C1”).End(xlDown).Row
For i = 1 To MaxRow

With Cells(i, “A”)
.NumberFormatLocal = “@”
.Value = Format(.Value, “00000”)
End With
Next i

 

<出力結果>

1→00001

 

特定のシートを取り出して名前を付けて保存する

 

Sub AとBシートを取り出す()

MsgBox (“Aシート、Bシートを取り出し、デスクトップに保存します。”)
MsgBox (“ファイル名は、「2019MM_勤怠表」にします。”)

Dim 日付 As Date
Dim 今月 As String
日付 = Date
今月 = Format(日付, “mm”)

Sheets(Array(“Aシート”, “Bシート”)).Select
Sheets(Array(“Aシート”, “Bシート”)).Copy

ChDir “C:\Users\user1\Desktop”
ActiveWorkbook.SaveAs Filename:= _
“C:\Users\user1\Desktop\2019” & 今月 & “_勤怠表.xlsx”, FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False

Workbooks(“2019” & 今月 & “_勤怠表.xlsx”).Close

MsgBox “C:\Users\user1\Desktopに保存しました。”

End Sub

 

 

以上です。

 

スポンサーリンク  

コメントを残す

メールアドレスが公開されることはありません。