ちょっと生きづらさを抱えた人へ、気持ちを楽にするためのお手紙です。

【VBA】セルの値をコピーする

セルの値をクリップボードにコピーします。

普通にコピーすれば良いわけなのですが、ペーストしたときに末尾の改行が欲しくないときとかに。

Option Explicit

'---------------------------------------------------------------------------------------------------
'【処 理 名】CopyRightCellValue
'【処理概要】クリックされたボタンの右のセルのセル値をクリップボードにコピーする
'【引    数】なし
'【返 却 値】なし
'---------------------------------------------------------------------------------------------------
Public Sub CopyRightCellValue()
    ' 右のセルの値をクリップボードにコピー
    CopyCellValue 1
End Sub
'---------------------------------------------------------------------------------------------------
'【処 理 名】CopyLeftCellValue
'【処理概要】クリックされたボタンの左のセルのセル値をクリップボードにコピーする
'【引    数】なし
'【返 却 値】なし
'---------------------------------------------------------------------------------------------------
Public Sub CopyLeftCellValue()
    ' 左のセルの値をクリップボードにコピー
    CopyCellValue -1
End Sub
'---------------------------------------------------------------------------------------------------
'【処 理 名】CopyCellValue
'【処理概要】クリックされたボタンの隣のセルのセル値をクリップボードにコピーする
'【引    数】ByVal pos As Integer:ボタンの右/左
'【返 却 値】なし
'---------------------------------------------------------------------------------------------------
Private Sub CopyCellValue(ByVal pos As Integer)
    Dim btn As Shape        ' ボタンオブジェクト
    Dim ws As Worksheet     ' ワークシートオブジェクト
    Dim rng As Range        ' セルオブジェクト
    Dim clipboard As Object ' クリップボードオブジェクト

    ' ボタンオブジェクトを取得
    Set btn = ActiveSheet.Shapes(Application.Caller)
    Set ws = ActiveSheet
    
    ' ボタンがあるセルの右隣のセルを取得
    Set rng = ws.Cells(btn.TopLeftCell.Row, btn.TopLeftCell.Column + pos)
    
    ' クリップボードにコピーするためのオブジェクトを作成
    Set clipboard = New DataObject
    clipboard.SetText rng.Value
    clipboard.PutInClipboard
End Sub

こちらからExcelファイルをダウンロードできます
https://github.com/misk-fudebaco/excel/blob/main/CopyCellValue.xlsm

コードをコピーする場合は、ボタンにマクロを登録してください。

Excelをダウンロードした場合は、ボタンはコピペすれば数を増やせます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA