LoginSignup
1
1

More than 3 years have passed since last update.

【Excel VBA】改行コードなしでエクセルのセル内容をコピーするショートカットの作成

Posted at

1.この記事について

エクセルでセルをコピーしてほかのアプリケーション(メモ帳とか)に張り付けしようとすると、
セル内容のほかに改行コード(LF)がついてくる。
これが結構タスクの際に邪魔になることがある(消すためにいちいちBSキーを打つのはめんどくさい)。

エクセルに、「値の貼り付け」機能は存在するのに「値のコピー」機能が存在しないことがこういう悩みを生むんだろう。

これについて対策をする。

※改行コードはLinuxターミナルを使用可能な環境であれば
Vimで新規ファイル開いて張り付けて《:set list》を実行すれば改行コードが可視化できる。

Windowsで可視化したい場合はサクラエディタとかを使えば可能だったと思う。

2.やりたいこと

改行コードなしでショートカット押下だけでセルの内容をコピーできる機能を追加したい。

3.使用したツール・環境

・Office2016

4.作成したコード

MyTool.bas
'******************************************************************************************
'*関数名    :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.終わりに

なにか補足がありましたらコメントください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1