#1.この記事について
エクセルでセルをコピーしてほかのアプリケーション(メモ帳とか)に張り付けしようとすると、
セル内容のほかに改行コード(LF)がついてくる。
これが結構タスクの際に邪魔になることがある(消すためにいちいちBSキーを打つのはめんどくさい)。
エクセルに、「値の貼り付け」機能は存在するのに「値のコピー」機能が存在しないことがこういう悩みを生むんだろう。
これについて対策をする。
※改行コードはLinuxターミナルを使用可能な環境であれば
Vimで新規ファイル開いて張り付けて《:set list》を実行すれば改行コードが可視化できる。
Windowsで可視化したい場合はサクラエディタとかを使えば可能だったと思う。
#2.やりたいこと
改行コードなしでショートカット押下だけでセルの内容をコピーできる機能を追加したい。
#3.使用したツール・環境
・Office2016
#4.作成したコード
'******************************************************************************************
'*関数名 :copyCellValueToCB
'*機能 :アクティブセル内容をクリップボードにコピー
'*引数(1) :無し
'******************************************************************************************
Public Sub copyCellValueToCB()
'定数
Const FUNC_NAME As String = "copyCellValueToCB"
'変数
On Error GoTo ErrorHandler
'---以下に処理を記述---
'クリップボードに文字列を格納
With CreateObject("Forms.TextBox.1")
.MultiLine = True
.Text = CStr(ActiveCell.Value)
.SelStart = 0
.SelLength = .TextLength
.Copy
End With
ExitHandler:
Exit Sub
ErrorHandler:
MsgBox "エラーが発生しましたので終了します" & _
vbLf & _
"関数名:" & FUNC_NAME & _
vbLf & _
"エラー番号" & Err.Number & Chr(13) & Err.Description, vbCritical
GoTo ExitHandler
End Sub
#5.解説
作成したこいつを、
Alt + F8のマクロ画面を開いてショートカットに登録するか、
onKeyメソッドを用いてショートカットに登録する。
ほかのキーとバッティングしないように
ctrl + shift + L とかctrl + shift + Pとかが良いんじゃないかと思う。
これでキー押下だけで改行コード無しの値のコピーが可能になった。
#6.終わりに
なにか補足がありましたらコメントください。