2018年 5月 の投稿一覧

バイナリーモードで読み込む(そもそもバイナリーってなんだ?) VBAマクロ

テキストファイルを操作するマクロ書いてたらぶち当たったので備忘録として。

 

バイナリーモードってのは 2進数で表現されたデータ(テキストファイル以外)を読み込みますよってこと

 

テキストファイル以外のファイルを扱う時に使うって覚えておけば問題ないかな!

 

あんま使わないけどw

 

サンプルコード

 

Sub filesousa()
Dim fun As String
Dim Num As Integer
Num = FreeFile
Open “‘C:\Users\Yusuke\Documents\名前入力.txt” For Binary As #Num ※下線部分は適宜作成してください。
fun = Space(FileLen(“C:\Users\Yusuke\Documents\名前入力.txt”))
Get #Num, , fun
Range(“A1”).Value = fun
Close Num
End Sub

 

セルに関数を入れる VBA マクロ

マクロで合計出せるけど、しがらみがあって(笑)マクロにできないという場面があるかと思います。

 

そんなときにセルに関数を挿入したいなと思うかもしれません。

 

そんな時に使用するのが Formula プロパティ

 

Range.Formula

 

もしくは

 

Cells.Formula

 

を使用すればサクッとできます♪

 

Sub Formulasam()
Range(“A1:A10”).Value = 5
Range(“A11”).Formula = “= SUM(A1:A10)”
End Sub

 

 

 

 

ペースト方法を指定して貼り付け!PasteSpecial VBAマクロ

値で貼り付けたいのにミスった!ってことあるかと思います。

 

そんな時には PasteSpecialメソッド を使いましょう。

 

xlPasteValues -4163 値のみ
xlPasteComments -4144 コメントを貼り付け
xlPasteFormulas -4123 数式を貼り付け
xlPasteFormats -4122 コピーしたソースの形式を貼り付け
xlPasteAll -4104 すべてを貼り付け
xlPasteValidation 6 入力規則を貼り付け
xlPasteAllExceptBorders 7 輪郭以外のすべてを貼り付け
xlPasteColumnWidths 8 コピーした列の幅を貼り付け
xlPasteFormulasAndNumberFormats 11 数式と数値の書式を貼り付け
xlPasteValuesAndNumberFormats 12 値と数値の書式を貼り付け
xlPasteAllUsingSourceTheme 13 ソースのテーマを使用してすべてを貼り付け
xlPasteAllMergingConditionalFormats 14 すべてを貼り付け、条件付き書式をマージ

 

ごちゃごちゃ余計な引数は使わん!って人は下記のサンプルをご閲覧あれ♪

 

Sub Pastes()
Range(“A1”) = “ペースト練習”
Range(“A1”).Select
Selection.Copy
Range(“E1”).PasteSpecial xlPasteValues
End Sub

 

ではでは。

 

 

変更を保存しないで閉じる VBA マクロ

マクロ書いているとブックとブックの操作ってよくあると思います。

指定のブックを開いてにょろにょろする とかですね。

 

ただ開いたブックを閉じるときに ”変更を保存しますか?”

ってメッセージがマクロ実行中に起きると何だか萎えますよね笑

 

そんな時は Closeメソッドを使ってサクッと解消しましょ♪

Closeメソッド

Workbooks.Close 

Savechanges:(省略可)=True(変更を保存する)もしくはFalse(保存しない) 

Filename:=ファイル名を指定して保存(省略可)

既定値はダイアログを表示します。

 

サンプルは下記

 

ではでは♪(*´ω`*)

文字列を検索するマクロ VBA

何かと便利な検索機能はVBAでも使うシーンがあるかと思います。

 

そこで使うのはFindメソッド

構文

Object:Rangeオブジェクト

What:(必須)検索データを指定

After:(省略可) 指定したセルの次のセルから検索を始める

LookIn:(省略可)検索対象を指定 数式(xlFormulas)、値(xlValues)、コメント(xlComments)

LookAt:(省略可)完全一致(xlWhole)もしくは部分一致(xlPart)かを指定

SearchOrder:(省略可) 検索方向を指定する。列方向(横方向)で検索(xlByColumns)、行方向(縦方向)に検索する(xlByRows)

SearchDirection:(省略可) 前方に検索(xlNext:既定値)、後方に検索(xlPrevious)

MatchCase:(省略可) 大文字と小文字を区別する(True)、区別しない(False)

MatchByte:(省略可) 半角と全角を区別する(True)、区別しない(False)

SearchFormat:(省略可) 書式の検索をする (True)、検索しない(False)

検索文字が見つからない場合は ”Nothing” を返します。

 

構文長いですね(^-^;

 

長い!

余計な構文いいから文字探したいんだ!( ゚Д゚)

 

という人は下記のサンプル使ってみてはいかがでしょう。

Sub sagasutest()
Dim R As Range
Set R = Cells.Find(what:=”ミスチル”)
If R Is Nothing Then
MsgBox “文字が見つかりません”
Else
MsgBox “文字が見つかりました。”
R.Activate
End If

End Sub

ミスチルが好きなので

例文でミスチルとしていますが検索したい文字を入力してください笑

 

ではでは

今月末日・先月末日・来月末日 を返すマクロ VBA

事務職してるとexcelで月末日を出さなきゃならなくなりますよね。

 

下記、サンプルコードです。

 

Sub Hiduke()
‘今月の末日
Debug.Print DateSerial(Year(Date), Month(Date) + 1, 0)
‘前月の月末日
Debug.Print DateSerial(Year(Date), Month(Date), 0)
‘翌月の月末日
Debug.Print DateSerial(Year(Date), Month(Date) + 2, 0)
End Sub

 

DateSerialはVBA使っていると必須のデータ型関数です。

 

覚えれば非常に便利です♪