ペースト方法を指定して貼り付け!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使っていると必須のデータ型関数です。

 

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

VBA コピーの状態を解除する コピーモードの解除

マクロを書いて処理させられたのはいいけど、

コピーの状態がされたまま ってありがちです。

 

そんな時には

Application.CutCopyMode

を使用しましょう。

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

 

Sub copyR()
Range(“A1”).Copy
Application.CutCopyMode = False
End Sub

 

ちなみにApplication.CutCopyModeには返り値があります。

xlcopyコピーなら 1 を xlcutなら 2 を返します。

コピーされている状態 なのか、 切り取っている状態 なのか判別することができます。

使うことはなさそうですが笑

Sub copyR1()

Dim Modemiru
Range(“A1”).Copy
Modemiru = Application.CutCopyMode
Debug.Print Modemiru

Range(“A1”).Cut
Modemiru = Application.CutCopyMode
Debug.Print Modemiru

End Sub

 

イミディエイトウィンドウには

と表示されます。

複数選択(離れたセル)の行数を数える マクロ エクセルVBA

複数選択された(離れたセル)を選択をした場合の行の数えるマクロ

 

ユーザーフォーム作ってたら必要なマクロになったので考えてみました。

連続していない、離れたセルの行は”Rows.count”では数えられないんですね(*_*)

てなわけで使うのは”selection.areas”  Areasプロパティです。

 

Sub Areas()

Dim Hani As Range

Dim Rcount As Integer

Set Hani = Range(selection.address)

For Each kazu In Hani
Rcount = Rcount + Selection.Areas.Count
Next

Debug.Print Rcount

End Sub

 

やっと作りたいマクロが作れたよ~

おやすみなさい

みんな知らない(´ω`)エクエルマクロ(VBA)を書くって実はめちゃ楽しいこと♪

こんにちは

管理者のようじえといいます。

このブログではエクセルマクロにまつわる話と気まま日記を投稿していきます。

なぜエクセルなのか自己紹介をかねて書いていきます。

ちなみに何か発信したりするのって苦手なので、

変な文章書いてても温かい目で見守っていただければと思いますw

 

一社目のBlack企業に入社して営業職に就いてエクセルを触るようになりました。

もちろん最初はエクセルなんてわかりませんのでカチカチいじってました。

関数式を見てもIFってなんじゃこりゃ、Vlookってなんだ!式長っ!!!読めないだろこりゃw なんてチンプンカンプンな状態でした。

計算やら合計やらせっかく関数で一瞬でできる機能も使えず。いちいち手作業で計算して時間をかけて見積書を作ってました。

そんなこんなで1社目のBlack企業を退職し、2社目メーカーの事務職として就職しました。

 

事務職となり、まともにエクセルと向き合うようになりました。月間数億円のお金をやり取りする仕入れ先とエクセルで原価計算を行い、

大量のデータと様々な種類の製品を扱うようになりました。

原価計算等のチェック(A4サイズで10枚以上)は全て印刷して、紙とエクセルを付け合わせてチェック。チェックしては訂正など。

なんとも頭のおかしくなるような作業を毎週続けていました。単純作業・チェックの苦手な私は全然仕事ができませんでした。

どうにか楽にできる方法はないかと。ココでエクセルの書式やシート関数を覚え、ある程度のエクセルの知識はついていきました。

ただ、書式やシート関数の知識はついても作業時間と労力は大きくは変わらず。シート関数や書式だけだと限界がありました。

さらにチェックの苦手な私は時間をかけてリストを作ってもミスが多発。怒られてはまたミス。

ミスする自分に自信を無くし、仕事に対する気力も失い、人として価値が低いんだなと、空虚で喪失感漂う日々を送っていました。。。

 

本気でどうにかならないものかと考えているところで会社の業務改善の一環でVBAの導入がありました。

業務改善専門の業者さんが来て初めてマクロをみました。それは伝票作成の自動生成でした。マクロを見たときは驚きと感動でした。

こんなものがあるのかと。ダメな自分はこれをやるしかないと思い、エクセルマクロに没頭しました。

平日は会社から帰って夜遅くまで自宅でパソコンをいじいじ。休日も予定がなければ朝から晩までマクロをいじいじ。そんな日々が何か月か続きました。

そして、ついに自分で作ったマクロを会社で使おうとマクロを完成させました。初めて作ったマクロは土日を使い、日曜は一睡もせず月曜を迎えて作ったマクロです。

自分が作ったマクロを会社ではじめて使用しました。内容はブックから他のブックへの転記で、初心者にはなかなか手ごわい内容でした。

手ごわい内容のわりに他の人には手ごわさが伝わらない葛藤もありましたw

紆余曲折を経て初めて自分が作ったマクロがうまくいったときは何よりも自分が一番嬉しかったです。

 

その後どんどんマクロを導入していき、

会社の部署の共有リストの作成を自動化。コンテナに積まれた製品のリストアップの自動化などなど

一日潰していた原価計算も今や小一時間程度となりました。

さらに外部ライブラリの操作・フォルダ操作を理解し、フォルダ内のファイルを自由自在に操りリストアップ。種々の項目の計算や細かく複雑な計算などできるようになりました。

このあたりである程度のスキルがついたなと実感し、自分に対しても自信がでてきました。社内でもVBAで一目置かれるようになりました。

 

とはいえマクロを覚えるのは一概に簡単とは言えないです。順調にマクロを覚えられたかと言われればもちろん、NOです。

なんでうまくいかないんだ。なんでココでエクセルブチ切れちゃうの。などなど。

たくさん、たくさん。壁にぶつかり挫折しかけたこともありました。

相応の時間とお金も使いました。それでも折れなかったのは自分に対する期待とマクロの可能性を実感できたこと。そしてエクセルマクロを好きになったからです。

せっかく好きなことをみつけたので勉強がてらみなさんと情報共有したいなと思い、サイトを立ち上げました♪

 

VBAで挫折された方、辞めてしまった方たくさんいると思います。

機会があればもう一度向き直ってVBAをいじってみてください。何度もコードを書いてみてください。

ふと、こんなもんかと理解できることもあります。

ご質問あれば私でできる範囲で尽力します♪お気軽にご質問ください(^^)

 

ようじえ