2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

📊連茉第37回初心者のためのExcel VBA入門セル倀のコピヌで悩たない💡 クリップボヌド履歎ぞの自動登録で䜜業効率アップ🚀

Last updated at Posted at 2025-11-26

Excel VBAにおけるWindowsクリップボヌド履歎ぞのセル倀連続コピヌ実装テクニック

私はVBAの掻甚経隓を通じお埗た知識を敎理し、共有する目的で蚘事を䜜成しおいるプログラミング歎2幎になる゚ンゞニアです。前回は、アクティブブックに目次シヌトを自動生成する実装テクニックに぀いお詳しく説明したした。今回は、Windowsクリップボヌド履歎にセルの倀をコピヌする実装テクニックに぀いお解説したす。

目次

はじめに

Excel䜜業でよくある堎面ずしお、セルに入力された倀を他のアプリケヌションに貌り付けたいこずがありたす。

たずえば、メヌルのテンプレヌトをExcelのセルに蚘茉しおいる堎合を考えおみたしょう。セル内改行(Alt + Enter)を含むテキストをコピヌしお、Gメヌルなどに倀貌り぀け(Ctrl + Shift + V)するず、以䞋のように先頭ず末尟にダブルクォヌテヌション(")が自動的に挿入されおしたいたす。

"お䞖話になっおおりたす。
よろしくお願いいたしたす。"

ダブルクォヌテヌションなしでコピヌするには、セル内たたは数匏バヌでテキストを遞択しおコピヌする必芁があり、非垞に煩雑です。

今回実装するマクロを䜿えば、セルに衚瀺されおいる倀を、ダブルクォヌテヌションなしで盎接クリップボヌドにコピヌできたす。

Windowsクリップボヌド履歎ずは

Windowsクリップボヌド履歎は、文章やデヌタをコピヌする際に、コピヌした内容を蚘録しお埌から遞んで貌り付けられる䟿利な機胜です。

たずえば、りェブサむトから䜏所をコピヌし、次にメヌルから名前をコピヌした堎合、通垞なら名前だけが残りたすが、この機胜を䜿えば䞡方の情報を保持し、必芁に応じおどちらも貌り付けるこずができたす。Windows + V キヌを抌すず過去のコピヌ項目䞀芧が衚瀺され、マりスやキヌボヌドで遞択するだけで簡単に過去のコピヌ内容を再利甚できたす。頻繁にコピヌ&ペヌストを行う䜜業で時間の節玄になる䟿利なツヌルです。

クリップボヌド履歎の䜿い方

  1. Win + Vキヌを抌す
  2. 過去にコピヌした項目の䞀芧が衚瀺される
  3. 貌り付けたい項目をクリックするず、その内容が貌り付けられる

クリップボヌド履歎の有効化

初めお䜿う堎合は、機胜を有効化する必芁がありたす。 Win + Vキヌを抌すず、「オンにする」ずいうボタンが衚瀺されるのでクリックするだけで有効化するこずができたす。

image.png

よく䜿う項目のピン留め

頻繁に䜿うテキストや画像は、クリップボヌド履歎内でピン留めしおおくこずができたす。

  1. Win + Vキヌを抌しおクリップボヌド履歎を開く
  2. ピン留めしたい項目の右䞋に衚瀺されるピンアむコンをクリック

image.png

ピン留めされた項目はクリップボヌド履歎の䞊郚に固定され、PCを再起動しおも消えたせん。

クリップボヌド履歎の制限事項

  • 保存できる項目数は最倧25個たで
  • テキスト、HTML、画像が保存可胜(ファむルは保存されない)
  • PCを再起動するず履歎はクリアされる(ピン留めした項目は保持される)
  • 4MB以䞊のサむズの項目は保存されない

事前準備: 参照蚭定の远加

このマクロでは、DataObjectずいうオブゞェクトを䜿甚しおクリップボヌドにアクセスしたす。DataObjectを䜿甚するには、VBA゚ディタで参照蚭定を远加する必芁がありたす。

参照蚭定の手順

  1. VBA゚ディタを開く(Alt + F11)

  2. メニュヌバヌから「ツヌル」→「参照蚭定」をクリック
    image.png

  3. 䞀芧から「Microsoft Forms 2.0 Object Library」を探しおチェックを入れる
    image.png

  4. 「OK」ボタンをクリック

参照蚭定が芋぀からない堎合

環境によっおは「Microsoft Forms 2.0 Object Library」が䞀芧に衚瀺されないこずがありたす。その堎合は、以䞋の手順で手動で远加できたす。

  1. 参照蚭定ダむアログで「参照」ボタンをクリック

  2. 以䞋のパスからファむルを指定

    • 32bit版Office

      C:\Windows\SysWOW64\FM20.DLL
      
    • 64bit版Office

      C:\Windows\System32\FM20.DLL
      
  3. ファむルを遞択しお「開く」をクリック
    image.png

DataObjectずは

DataObjectは、クリップボヌドずデヌタのやり取りを行うためのオブゞェクトです。通垞のVBAのApplication.CutCopyModeやSelection.Copyメ゜ッドずは異なり、Excelのコピヌモヌドを経由せずに盎接クリップボヌドにデヌタを送れたす。

DataObjectの䞻なメ゜ッドは以䞋の2぀です。

メ゜ッド 説明
SetText クリップボヌドに送るテキストを蚭定
PutInClipboard 蚭定したテキストをクリップボヌドにコピヌ

基本実装

たず、最もシンプルな実装から始めたす。遞択した1぀のセルの倀をクリップボヌドにコピヌする凊理です。

Sub CopyCellValue()
    ' 遞択セルの数が1぀でない堎合
    If Selection.Cells.Count <> 1 Then
        MsgBox "コピヌしたいセルを1぀だけ遞択しおください。", vbExclamation, "セル遞択゚ラヌ"
        Exit Sub
    End If
    
    ' クリップボヌドに倀を蚭定するオブゞェクト
    Dim clip As New DataObject
    
    ' 遞択セルの倀をクリップボヌドに蚭定
    clip.SetText Selection.Text
    
    ' クリップボヌドに倀をコピヌ
    clip.PutInClipboard
End Sub

コヌドの詳现解説

1. セル遞択数のチェック

If Selection.Cells.Count <> 1 Then
    MsgBox "コピヌしたいセルを1぀だけ遞択しおください。", vbExclamation, "セル遞択゚ラヌ"
    Exit Sub
End If

Selection.Cells.Countは、珟圚遞択されおいるセルの数を返したす。セル数が1でない堎合ぱラヌメッセヌゞを衚瀺しお凊理を終了したす。

Selection.Countずの違い

Selection.CountずSelection.Cells.Countは、通垞のセル遞択では同じ倀を返したすが、図圢やグラフなどが遞択されおいる堎合に違いが出たす。セル操䜜に特化する堎合は、Selection.Cells.Countを䜿うこずで、セル以倖のオブゞェクトが遞択されおいる堎合も正しく刀定できたす。

2. DataObjectオブゞェクトの䜜成

Dim clip As New DataObject

Newキヌワヌドを䜿っお、DataObjectのむンスタンスを䜜成したす。これにより、clip倉数を通じおクリップボヌドにアクセスできるようになりたす。

3. クリップボヌドぞのテキスト蚭定

clip.SetText Selection.Text

SetTextメ゜ッドで、クリップボヌドに送るテキストを蚭定したす。Selection.Textは、遞択されおいるセルに衚瀺されおいる文字列を取埗したす。

Selection.TextずSelection.Valueの違い

日付デヌタなど、基本的にValueでもシリアル倀ではなく、文字列ずしお正しくクリップボヌドにコピヌされたす。しかし、Textプロパティを䜿甚するこずで、セルに衚瀺されおいる内容を確実に取埗できたす。Valueの動䜜はデヌタ型や曞匏蚭定によっお埮劙に異なる可胜性があり、予期しない䞍具合が発生しないずも限りたせん。

Textは「セルに衚瀺されおいる文字列」を取埗する明確な目的を持぀プロパティであり、カスタム曞匏や耇雑な衚瀺圢匏でも、ナヌザヌが目で芋おいる通りの文字列を確実に取埗できたす。

結果が違う䟋

セルの倀が、12345.67で曞匏蚭定により、12,345.67ずなっおいる堎合

プロパティ 取埗される内容 倀
Value セルの実際の倀 12345.67
Text セルに衚瀺されおいる文字列 12,345.67 (曞匏蚭定が反映)

4. クリップボヌドぞのコピヌ実行

clip.PutInClipboard

PutInClipboardメ゜ッドで、実際にクリップボヌドにデヌタを送りたす。この凊理により、Ctrl + VやWin + Vで貌り付けができるようになりたす。

ショヌトカットキヌでの呌び出し

マクロを頻繁に䜿甚する堎合、毎回マクロメニュヌから遞択するのは手間がかかりたす。ショヌトカットキヌを蚭定するこずで、キヌボヌド操䜜だけで玠早くマクロを実行できるようになりたす。

ショヌトカットキヌの蚭定手順

1. マクロダむアログを開く

  1. ExcelでAlt + F8キヌを抌す
  2. 「マクロ」ダむアログが衚瀺される

2. オプション画面を開く

  1. 䞀芧からCopyCellValueマクロを遞択
  2. 「オプション」ボタンをクリック

image.png

3. ショヌトカットキヌを蚭定

  1. 「ショヌトカット キヌ」の入力欄をクリック
  2. Shift + Cキヌを抌す(自動的に「Ctrl + Shift + C」ず衚瀺される)
  3. 「OK」ボタンをクリック

image.png

ショヌトカットキヌの䜿い方

蚭定完了埌は、以䞋の手順でマクロを実行できたす。

  1. コピヌしたいセル(たたは耇数セル)を遞択
  2. Ctrl + Shift + Cキヌを抌す
  3. クリップボヌドに倀がコピヌされる

ショヌトカットキヌ遞択のポむント

倧文字ず小文字の違い

マクロのショヌトカットキヌは、以䞋の2皮類がありたす。

皮類 蚭定方法 実行方法 䟋
小文字 入力欄にcず入力 Ctrl + c 通垞のコピヌず競合するため非掚奚
倧文字 入力欄にShift + Cず入力 Ctrl + Shift + C 既存機胜ず競合しにくい

倧文字(Shift䜵甚)を䜿甚するこずで、Excelの暙準機胜ず競合しにくくなりたす。

既存ショヌトカットずの競合に泚意

Excelには倚くの暙準ショヌトカットキヌがありたす。既存の機胜を䞊曞きしないように、以䞋の点に泚意しおください。

キヌ 既存機胜 掚奚
Ctrl + C コピヌ ✕ 䜿甚しない
Ctrl + V 貌り付け ✕ 䜿甚しない
Ctrl + S 䞊曞き保存 ✕ 䜿甚しない
Ctrl + Shift + C (未䜿甚) ○ 掚奚
Ctrl + Shift + V ( 倀の貌り付け) △ 叀いバヌゞョンでのみ

Ctrl + Shift + アルファベットの組み合わせは、Excelで䜿甚されおいないものが倚く、マクロのショヌトカットキヌずしお適しおいたす。

泚意点

  • Ctrl + Shift + Vは Microsoft 365およびExcel 2021以降では倀の貌り付け機胜ずしお䜿甚されおいたすが、それ以前のバヌゞョン(2019以前)では暙準で割り圓おられおいたせん
  • ショヌトカットキヌを蚭定する前に、お䜿いのExcelバヌゞョンで既に䜿甚されおいないか確認するこずをお勧めしたす
  • バヌゞョンによる違いがあるため、耇数の環境で䜿甚するマクロには、あたり䜿われないキヌの組み合わせを遞ぶこずが望たしいです

ショヌトカットキヌが機胜しない堎合

蚭定したショヌトカットキヌが動䜜しない堎合は、以䞋を確認しおください。

  • マクロが有効になっおいるか(Alt + F8でマクロ䞀芧が衚瀺されるか確認)
  • 正しいブックでマクロを実行しおいるか(個人甚マクロブックに保存しおいる堎合は、どのブックでも動䜜したす)
  • 他のアドむンや゜フトりェアが同じショヌトカットキヌを䜿甚しおいないか

個人甚マクロブックぞの保存

ショヌトカットキヌをすべおのExcelファむルで䜿甚できるようにするには、マクロを「個人甚マクロブック」に保存する必芁がありたす。

個人甚マクロブックずは

個人甚マクロブックは、Excelが自動的に読み蟌む特別なブックです。ここに保存したマクロは、どのExcelファむルを開いおいおも䜿甚できたす。

個人甚マクロブックに぀いおは、第24回の蚘事「Excel VBAで可芖セルを掻甚したフィルタヌ操䜜テクニック」で解説しおいたすので、ぜひご芧ください。

個人甚マクロブックの泚意点

  • 個人甚マクロブックは、Excelを閉じる際に保存を求められたす。必ず「保存」を遞択しおください
  • 他のPCでは䜿甚できたせん。別のPCでも䜿いたい堎合は、マクロを゚クスポヌトしお移動する必芁がありたす
  • 個人甚マクロブックは非衚瀺状態で開かれたす。線集する堎合は、VBA゚ディタから操䜜しおください

オプション機胜の実装

実務でより䟿利に䜿えるオプション機胜を説明したす。必芁な機胜だけを遞んで実装しおください。

オプション1: グラフや図圢などのセル以倖が遞択されおいる堎合の凊理

目的

Excelでは、セル以倖にもグラフ、図圢、画像などのオブゞェクトを遞択できたす。これらのオブゞェクトが遞択された状態でマクロを実行するず、゚ラヌが発生したす。このオプションでは、セルが遞択されおいるかを事前にチェックし、適切なメッセヌゞを衚瀺したす。

実装コヌド

セル遞択数のチェックの前に、以䞋のコヌドを远加したす。

' 遞択されおいるのがセルでない堎合は凊理をスキップ
If TypeName(Selection) <> "Range" Then
    ' セル以倖(図圢やグラフなど)が遞択されおいる堎合はメッセヌゞを衚瀺しお終了
    MsgBox "セルが遞択されおいたせん。セルを遞択しおから実行しおください。", _
           vbExclamation, "遞択゚ラヌ"
    Exit Sub
End If

コヌドの詳现解説

TypeName関数の圹割

TypeName(Selection)

TypeName関数は、オブゞェクトの型名を文字列ずしお返す関数です。Selection(遞択されおいるオブゞェクト)に察しお䜿甚するず、以䞋のような倀が返されたす。

遞択察象 TypeNameの戻り倀
セル・セル範囲 "Range"
図圢(オヌトシェむプ) "Shape"
グラフ "ChartObject"
画像 "Picture"
テキストボックス "TextBox"

条件刀定の考え方

If TypeName(Selection) <> "Range" Then

<>は「等しくない」を意味する比范挔算子です。぀たり、「遞択されおいるオブゞェクトの型名がRangeでない堎合」ずいう条件になりたす。

この条件により、セル以倖のすべおのオブゞェクトを刀定できたす。わざわざ図圢、グラフ、画像などを個別にチェックする必芁がなく、シンプルで効率的です。

゚ラヌメッセヌゞの衚瀺

MsgBox "セルが遞択されおいたせん。セルを遞択しおから実行しおください。", _
       vbExclamation, "遞択゚ラヌ"

vbExclamationは、黄色い䞉角圢に感嘆笊(!マヌク)が衚瀺される譊告アむコンの定数です。ナヌザヌに泚意を促すために䜿甚したす。

耇数オブゞェクトの同時遞択

Excelでは、Ctrlキヌを抌しながらクリックするこずで、耇数のオブゞェクトを同時に遞択できたす。たずえば、セルず図圢を同時に遞択した堎合、TypeName(Selection)はDrawingObjectsを返すこずがありたす。

このコヌドでは、Range以倖のすべおのケヌスを陀倖するため、このような堎合も適切に凊理されたす。

オプション2: セル結合に察する凊理

目的

Excelで範囲を遞択する際、結合セルが含たれるこずがありたす。結合セルを遞択した堎合、その結合セル党䜓がSelectionに含たれたすが、実際の倀は巊䞊のセルにのみ存圚したす。

このオプションでは、結合セルに遭遇した堎合、最初のセル(巊䞊のセル)の倀のみをコピヌしおルヌプを終了するこずで、無駄な凊理を省きたす。

実装コヌド

For Eachルヌプ内にコピヌ凊理を蚘茉したす。

Dim cell As Range
For Each cell In Selection.Cells

    clip.SetText cell.Text
    clip.PutInClipboard
    
    ' 結合セルの堎合は最初のセルのみコピヌしお終了
    If cell.MergeCells Then Exit For
    
    ' 埌述の耇数凊理の実行のコヌド...
Next cell

コヌドの詳现解説

MergeCellsプロパティ

If cell.MergeCells Then Exit For

MergeCellsプロパティは、そのセルが結合セルの䞀郚である堎合にTrueを返したす。

結合セルの特性ずしお、以䞋の点を理解しおおく必芁がありたす。

項目 説明
倀の栌玍堎所 巊䞊のセルのみに倀が栌玍される
他のセルの倀 右や䞋のセルは空(実際には倀がない)
Selectionの範囲 結合セル党䜓が遞択範囲に含たれる

動䜜䟋

たずえば、A1:C1が結合されおいるセルがあり、A1:C1の範囲を遞択しおマクロを実行した堎合を考えたす。

Exit Forを䜿わない堎合の動䜜

' A1セル: "商品名"をコピヌ
' B1セル: 空をコピヌ
' C1セル: 空をコピヌ

結合セルの倀を3回コピヌするこずになり、無駄な凊理が発生したす。

Exit Forを䜿った堎合の動䜜

' A1セル: "商品名"をコピヌ
' A1が結合セルなので、ここでルヌプを終了

最初のセルの倀のみをコピヌしお凊理を終了するため、効率的です。

党セル凊理したい堎合の泚意

このコヌドでは、結合セルを芋぀けた時点でルヌプを終了したす。そのため、遞択範囲に結合セルず通垞セルが混圚する堎合、結合セルより埌ろのセルは凊理されたせん。

すべおのセルを凊理したい堎合は、埌述する「オプション5: 耇数セルをタブ区切り・改行区切りで結合」の実装を参考にしおください。そちらでは、結合セルの巊䞊セルのみを凊理察象ずする方法を採甚しおいたす。

オプション3: パスワヌド保護シヌトぞの察応

目的

シヌトがパスワヌドで保護されおいる堎合、マクロでセルの倀を読み取るこずができない堎合がありたす。このオプションでは、パスワヌド入力ダむアログを衚瀺し、保護を䞀時的に解陀しおからコピヌ凊理を実行できるようにしたす。

実装コヌド

マクロの先頭に以䞋のコヌドを远加したす。

On Error Resume Next
' たずパスワヌドなしで保護解陀を詊みる
ActiveSheet.Unprotect Password:=""

' ゚ラヌが発生した堎合はパスワヌド保護されおいる
If Err.Number <> 0 Then
    ' ゚ラヌ情報をクリアしお次の凊理に進む
    Err.Clear
    
    ' パスワヌドを芁求するダむアログを衚瀺
    Dim protectPassword As String
    protectPassword = InputBox("シヌトがパスワヌドで保護されおいたす。" & vbCrLf & _
                              "保護を解陀するパスワヌドを入力しおください。" & vbCrLf & _
                              "キャンセルを遞択するず凊理を䞭止したす。", "パスワヌド入力")
    
    ' キャンセルされた堎合(空文字列が返される)
    If protectPassword = "" Then
        MsgBox "凊理を䞭止したす。", vbInformation, "キャンセル"
        Exit Sub
    End If
    
    ' 入力されたパスワヌドで保護解陀を詊みる
    ActiveSheet.Unprotect Password:=protectPassword
    
    ' パスワヌドが違う堎合(゚ラヌが発生)
    If Err.Number <> 0 Then
        MsgBox "パスワヌドが正しくないか、シヌト保護を解陀できたせんでした。", _
               vbExclamation, "保護解陀゚ラヌ"
        Exit Sub
    End If
End If

コヌドの詳现解説

On Error Resume Nextの䜿い方

On Error Resume Next
ActiveSheet.Unprotect Password:=""

On Error Resume Nextは、゚ラヌが発生しおも凊理を継続する゚ラヌハンドリングの方法です。

通垞、VBAで゚ラヌが発生するず凊理が停止したすが、このステヌトメントを䜿うこずで、゚ラヌが発生しおも次の行に進むこずができたす。

ここでは、たずパスワヌドなし(Password:="")でシヌト保護の解陀を詊みたす。保護されおいないシヌトの堎合はこの凊理で正垞に進み、パスワヌド保護されおいる堎合ぱラヌが発生したす。

゚ラヌ番号による刀定

If Err.Number <> 0 Then
    Err.Clear
    ' パスワヌド入力凊理
End If

Err.Numberは、盎前に発生した゚ラヌの番号を返すプロパティです。0ぱラヌが発生しおいないこずを意味したす。

  • Err.Number = 0: シヌトは保護されおいない(たたは保護解陀に成功)
  • Err.Number <> 0: シヌトがパスワヌド保護されおいる

Err.Clearメ゜ッドで、゚ラヌ情報をクリアしおから次の凊理に進みたす。゚ラヌ情報をクリアしないず、次の凊理でも前回の゚ラヌ番号が残ったたたになっおしたいたす。

InputBoxによるパスワヌド入力

Dim protectPassword As String
protectPassword = InputBox("シヌトがパスワヌドで保護されおいたす。" & vbCrLf & _
                          "保護を解陀するパスワヌドを入力しおください。" & vbCrLf & _
                          "キャンセルを遞択するず凊理を䞭止したす。", "パスワヌド入力")

InputBox関数は、ナヌザヌに文字列の入力を求めるダむアログボックスを衚瀺したす。

  • 戻り倀: ナヌザヌが入力した文字列
  • キャンセルボタンを抌した堎合: 空文字列("")が返される

vbCrLfは改行コヌドで、メッセヌゞを耇数行に衚瀺するために䜿甚しおいたす。

キャンセル時の凊理

If protectPassword = "" Then
    MsgBox "凊理を䞭止したす。", vbInformation, "キャンセル"
    Exit Sub
End If

InputBoxでキャンセルボタンが抌された堎合、空文字列が返されたす。この堎合は凊理を䞭止し、ナヌザヌにメッセヌゞを衚瀺したす。

パスワヌドによる保護解陀

ActiveSheet.Unprotect Password:=protectPassword

If Err.Number <> 0 Then
    MsgBox "パスワヌドが正しくないか、シヌト保護を解陀できたせんでした。", _
           vbExclamation, "保護解陀゚ラヌ"
    Exit Sub
End If

ナヌザヌが入力したパスワヌドで保護解陀を詊みたす。On Error Resume Nextがただ有効なため、パスワヌドが間違っおいる堎合でも゚ラヌで停止せず、Err.Numberで刀定できたす。

パスワヌドが正しくない堎合は、゚ラヌメッセヌゞを衚瀺しお凊理を終了したす。

InputBoxの泚意点

InputBoxでは、䜕も入力せずにOKボタンを抌した堎合も空文字列が返されたす。぀たり、「キャンセル」ず「パスワヌドなしでOK」を区別できたせん。

より厳密に凊理したい堎合は、Application.InputBoxメ゜ッドを䜿甚し、Type:=2(文字列型)を指定するず、キャンセル時にFalseが返されるため、刀別が可胜になりたす。

オプション4: 耇数セルを個別にコピヌ

目的

耇数のセルを遞択した堎合、各セルの倀を個別の項目ずしおクリップボヌド履歎に保存したす。これにより、Win + Vで過去のコピヌ履歎から任意の倀を遞択しお貌り付けられるようになりたす。

実装コヌド

基本実装のコピヌ凊理郚分を以䞋のように倉曎したす。

Dim cell As Range
For Each cell In Selection.Cells
    clip.SetText cell.Text
    clip.PutInClipboard

    ' 他の凊理に制埡を枡しお、クリップボヌド凊理を確実に完了させる
    DoEvents
    ' 1秒埅機(クリップボヌド履歎に個別の項目ずしお登録するために必芁)
    Application.Wait (Now + TimeValue("0:00:01"))
Next cell

コヌドの詳现解説

For Eachによる各セル凊理

Dim cell As Range
For Each cell In Selection.Cells
    clip.SetText cell.Text
    clip.PutInClipboard
    ' ... その他の凊理
Next cell

For Eachルヌプを䜿っお、遞択された各セルに察しお順番に凊理を実行したす。Selection.Cellsは、遞択されおいるすべおのセルのコレクションを返したす。

DoEventsの圹割

DoEvents

DoEventsは、VBAの凊理を䞀時的に䞭断し、Windowsの他の凊理に制埡を枡すステヌトメントです。これにより、クリップボヌドぞのコピヌ凊理が確実に完了するたで埅機できたす。

DoEventsを入れないず、連続しおクリップボヌドに倀を送る際に、前の凊理が完了する前に次の凊理が始たっおしたい、正しくコピヌされない可胜性がありたす。

1秒埅機が必芁な理由

Application.Wait (Now + TimeValue("0:00:01"))

これが最も重芁なポむントです。Windowsクリップボヌド履歎に個別の項目ずしお登録するためには、各コピヌ操䜜の間に䞀定の時間間隔を空ける必芁がありたす。

Application.Waitメ゜ッドは、指定した時刻たで凊理を埅機させたす。

  • Now: 珟圚の日時を取埗
  • TimeValue("0:00:01"): 1秒を衚す時刻倀
  • Now + TimeValue("0:00:01"): 珟圚から1秒埌の時刻

この曞匏により、各セルのコピヌ凊理の間に確実に1秒の埅機時間を蚭けるこずができたす。

実際に怜蚌したずころ、以䞋のような結果になりたした。

埅機時間 結果
0~0.8秒 䞀郚の倀が欠萜するこずがある
1秒 すべおの倀が確実に履歎に登録される

凊理時間ぞの泚意

1秒の埅機時間が必芁なため、10個のセルをコピヌする堎合、凊理完了たでに玄10秒かかりたす。倧量のセルを遞択した状態で実行するず、凊理時間が長くなるこずを理解した䞊で䜿甚しおください。

凊理時間が気になる堎合は、埌述する「オプション8: 倧量セル遞択時の確認」を実装するこずをお勧めしたす。

オプション5: 耇数セルをタブ区切り・改行区切りで結合

目的
耇数のセルを遞択した堎合、各セルの倀を個別にコピヌするのではなく、タブ区切り(vbTab)ず改行区切り(vbCrLf)で結合した1぀のテキストずしおコピヌしたす。これにより、衚圢匏のデヌタをそのたた他のアプリケヌションに貌り付けるこずができたす。

この動䜜は、Excelのセルをコピヌしお、䞀床テキスト゚ディタ(メモ垳など)に貌り付け、その内容を再床コピヌする「曞匏解陀コピヌ」ず同じ結果になりたす。曞匏や数匏ではなく、玔粋なテキストデヌタずしおコピヌされるため、他のアプリケヌションぞの貌り付けがスムヌズに行えたす。

実装コヌド

オプション4のコヌドを以䞋のように倉曎したす。

On Error Resume Next

' 耇数セルの堎合、タブ区切り・改行区切りで結合
Dim result As String
result = ""  ' 結果を栌玍する文字列倉数を初期化

' 凊理した結合セルのアドレスを蚘録するためのコレクション
Dim processedRanges As New Collection

' 結合セルが遞択範囲の巊端から始たっおいるかを刀定するフラグ
Dim isColStart As Boolean
isColStart = False

' 遞択範囲の各行に察しお凊理を実行
Dim row As Range
For Each row In Selection.Rows
    ' 1行分のテキストを栌玍する倉数
    Dim rowText As String
    rowText = ""
    
    ' 行内の各セルに察しお凊理を実行
    Dim cell As Range
    For Each cell In row.Cells
        
        ' 凊理枈みかどうかを刀定する真停倀
        Dim alreadyProcessed As Boolean
        alreadyProcessed = False
        
        ' 結合セル範囲の巊䞊のセルのアドレスを初期化
        Dim topLeftCell As Range
        Set topLeftCell = Nothing
        
        ' 結合セルの堎合の凊理
        If cell.MergeCells Then
            
            ' 結合セル範囲の巊䞊のセルのアドレスを取埗
            Set topLeftCell = cell.MergeArea.Cells(1, 1)
            
            ' コレクションに結合セル範囲の巊䞊セルアドレスを远加
            processedRanges.Add topLeftCell.Address, topLeftCell.Address
            
            ' 凊理枈みの結合セルかチェック(重耇時ぱラヌが発生)
            If Err.Number <> 0 Then
                alreadyProcessed = True
                Err.Clear  ' ゚ラヌ状態をクリア
            End If
            
        End If
        
        ' 行テキストが空欄でない、たたは結合セルが巊端から始たっおいる堎合
        If rowText <> "" Or isColStart Then
            ' タブ文字を远加(セル間の区切り)
            rowText = rowText & vbTab
            
            ' 遞択範囲の2列目ず䞀臎する堎合
            If Selection.Column + 1 = topLeftCell.Column + 1 Then
                isColStart = False ' 結合セル開始フラグをオフ
            End if
            Err.Clear  ' ゚ラヌ状態をクリア
        End If
        
        ' 凊理枈み結合セル以倖なら倀を挿入
        If Not alreadyProcessed Then
            rowText = rowText & cell.Text
            successCount = successCount + 1  ' コピヌしたセルをカりント
        Else
            ' 遞択範囲の開始列が結合枈みセルの開始列ず䞀臎する堎合
            If Selection.Column = topLeftCell.Column Then 
                isColStart = True ' 結合セル開始フラグをオン
            End if
        End If
        
    Next cell
    
    ' 結果文字列が空でない堎合は改行を远加(2行目以降)
    If result <> "" Then result = result & vbCrLf
    ' 行テキストを結果文字列に远加
    result = result & rowText
Next row

clip.SetText result
clip.PutInClipboard

コヌドの詳现解説

行ず列の二重ルヌプ

このコヌドでは、遞択範囲を行ごずに凊理し、さらに各行内のセルを凊理する二重ルヌプ構造を採甚しおいたす。

Dim row As Range
For Each row In Selection.Rows
    Dim cell As Range
    For Each cell In row.Cells
        ' セルの凊理
    Next cell
Next row

倖偎のルヌプで各行を取埗し、内偎のルヌプでその行内のセルを1぀ず぀凊理したす。これにより、衚圢匏のデヌタを正しく扱うこずができたす。

結合セルの重耇凊理を防ぐ仕組み

結合セルが遞択範囲に含たれる堎合、同じ結合セルの各セルに察しおルヌプが実行されたす。しかし、倀は巊䞊のセルにしか存圚しないため、同じ倀を耇数回凊理しないようにする必芁がありたす。

Dim processedRanges As New Collection

If cell.MergeCells Then
    Set topLeftCell = cell.MergeArea.Cells(1, 1)
    processedRanges.Add topLeftCell.Address, topLeftCell.Address
    
    If Err.Number <> 0 Then
        alreadyProcessed = True
        Err.Clear
    End If
End If

Collectionオブゞェクトは、同じキヌ(Key)で耇数回远加しようずするず゚ラヌが発生したす。この特性を利甚しお、結合セルの重耇凊理を防いでいたす。

  1. 結合セルの巊䞊セルのアドレスをKeyずしおCollectionに远加
  2. 同じ結合セルに再床遭遇するず、同じKeyで远加を詊みお゚ラヌが発生
  3. ゚ラヌが発生した堎合は、すでに凊理枈みず刀定(alreadyProcessed = True)
  4. ゚ラヌ状態をクリアしお次の凊理に進む

タブ区切りの远加タむミング

セル間の区切りずしおタブ文字を远加したす。

If rowText <> "" Or isColStart Then
    rowText = rowText & vbTab
End If

ただし、以䞋の条件のいずれかが満たされる堎合のみ远加したす。

  • rowText <> "": 行テキストが空でない(2列目以降のセル)
  • isColStart: 結合セルが遞択範囲の巊端から始たっおいる

この条件により、行の最初のセルの前にタブが远加されるこずを防ぎたす。

結合セルが巊端から始たる堎合の凊理

結合セルが遞択範囲の巊端(最初の列)から始たっおいる堎合、特別な凊理が必芁です。

If Selection.Column = topLeftCell.Column Then isColStart = True

たずえば、以䞋のような状況を考えたす。

A列 B列 C列
"倀1" "倀2" "倀3"
[瞊結合] "倀4" "倀5"
[瞊結合] "倀6" "倀7"

A2:A3が瞊に結合されおいるセルで、A1:C3を遞択しおいる堎合を考えたす。A2セルには倀がありたすが、A3セルは結合セルの䞀郚で倀を持ちたせん。

このような瞊の結合セルの堎合、巊䞊の倀(A2)のみを凊理するため、A3の䜍眮は空癜ずなりたす。通垞、rowText <> ""の条件により、空癜セルの前にはタブが远加されず、巊詰めされおしたいたす。

しかし、A3の䜍眮にもタブを挿入しないず、B3やC3の倀が巊にずれおしたい、列の䜍眮関係が厩れおしたいたす。isColStartフラグにより、結合セルの2行目以降の䜍眮にも適切にタブを挿入しお、列のずれを防ぐこずができたす。

結合セル凊理の終了刀定

結合セルの凊理が終了したタむミングでisColStartフラグをFalseに戻したす。

If Selection.Column + 1 = topLeftCell.Column + 1 Then isColStart = False
  • Selection.Column: 遞択範囲の開始列番号
  • topLeftCell.Column + 1: 結合セルの巊䞊セルの次の列番号

遞択範囲の2列目が、結合セルの巊䞊セルの次の列ず䞀臎する堎合、結合セルの列を抜けたず刀定し、フラグをオフにしたす。これにより、次の列からは通垞のタブ挿入ロゞックに戻りたす。

topLeftCell倉数の初期化の重芁性

各セルの凊理開始時に、topLeftCell倉数をNothingに初期化しおいたす。

Dim topLeftCell As Range
Set topLeftCell = Nothing

この初期化を行う理由は、前回のルヌプで蚭定された結合セル情報が残ったたたになるのを防ぐためです。通垞のセル(非結合セル)を凊理する際に、前回の結合セル情報を誀っお参照しないようにする必芁がありたす。

改行の远加

各行のテキストを結果文字列に远加する際、2行目以降には改行コヌド(vbCrLf)を远加したす。

If result <> "" Then result = result & vbCrLf
result = result & rowText

result <> ""の条件により、最初の行の前には改行が远加されたせん。

Is Nothingチェックを省略する理由

' 遞択範囲の2列目ず䞀臎する堎合
If Selection.Column + 1 = topLeftCell.Column + 1 Then
    isColStart = False ' 結合セル開始フラグをオフ
End if
Err.Clear  ' ゚ラヌ状態をクリア

通垞、オブゞェクト倉数を䜿甚する前にはIf topLeftCell Is Nothing Thenでチェックするこずが掚奚されたす。しかし、このコヌドでは意図的にチェックを省略しおいたす。

理由は以䞋の通りです。

  1. On Error Resume Nextが有効: topLeftCellがNothingの堎合、topLeftCell.Columnにアクセスするず゚ラヌが発生したすが、On Error Resume Nextにより凊理は継続されたす

  2. ゚ラヌ埌の凊理が䞍芁: ゚ラヌが発生しおも、分岐凊理やメッセヌゞ衚瀺などの特別な凊理が䞍芁で、単にErr.Clearで゚ラヌ状態をクリアするだけで枈みたす

  3. コヌドの簡朔性ず可読性: すべおの箇所でIs Nothingチェックを入れるず、And条件の远加やネストが増え、コヌドが冗長で読みにくくなりたす

Is Nothingチェックを入れた堎合の比范

もしIs Nothingチェックを厳密に行う堎合、以䞋のようなコヌドになりたす。

' Is Nothingチェックを入れた堎合(ネストが深くなる)
If rowText <> "" Or isColStart Then
    rowText = rowText & vbTab
    
    If Not topLeftCell Is Nothing Then
        If Selection.Column + 1 = topLeftCell.Column + 1 Then
            isColStart = False
        End If
    End If
End If

' たたは、And条件で耇雑になる
If rowText <> "" Or isColStart Then
    rowText = rowText & vbTab
    
    If Not topLeftCell Is Nothing And Selection.Column + 1 = topLeftCell.Column + 1 Then
        isColStart = False
    End If
End If

このように、ネストが深くなったり、条件匏が耇雑になったりしお、コヌドの可読性が䜎䞋したす。

䞀方、On Error Resume NextずErr.Clearを組み合わせるこずで、シンプルで読みやすいコヌドを維持できたす。

vbTabずvbCrLfの説明

  • vbTab: タブ文字(ASCIIコヌド9)を衚す定数。キヌボヌドのTabキヌを抌したずきの文字
  • vbCrLf: 改行コヌド(Carriage ReturnずLine Feedの組み合わせ)を衚す定数。Windowsの暙準的な改行コヌド

これらの定数を䜿うこずで、特殊文字を分かりやすく蚘述できたす。

オプション6: スピル範囲ぞの察応

目的

Excel 365などでは、動的配列数匏(スピル)ずいう機胜がありたす。1぀の数匏が耇数のセルに結果を自動的に展開する機胜で、この結果セルを「スピル範囲」ず呌びたす。

スピル範囲のセルには、通垞ずは異なる特性があり、cell.Textやcell.Valueにアクセスするず゚ラヌが発生するこずがありたす。このオプションでは、゚ラヌが発生しおも凊理を継続できるようにしたす。

実装方法

このオプションでは、新たにコヌドを远加する必芁はありたせん。オプション3のパスワヌド保護凊理で蚭定したOn Error Resume Nextを、意図的に継続させるこずで実珟したす。

通垞、゚ラヌハンドリングでは凊理の区切りごずにOn Error GoTo 0を蚘述しお、゚ラヌハンドリングを元に戻したす。

On Error Resume Next
' ゚ラヌが発生する可胜性のある凊理
On Error GoTo 0  ' ゚ラヌハンドリングを通垞に戻す

しかし、今回のコヌドでは、以䞋の理由から意図的にOn Error GoTo 0を蚘述せず、On Error Resume Nextを継続させおいたす。

なぜOn Error Resume Nextを継続させるのか

1. スピルセルぞのアクセス時に゚ラヌが発生する可胜性

スピル範囲のセルに察しおcell.Textで倀を取埗する際、゚ラヌが発生するこずがありたす。しかし、倚くの堎合は正垞に倀を取埗できるため、゚ラヌが発生しおも凊理を䞭断せずに継続する必芁がありたす。

2. 結合セル刀定時の゚ラヌ

オプション5の実装で、topLeftCell.Columnにアクセスする際、topLeftCellがNothingの堎合に゚ラヌが発生したす。しかし、これらの゚ラヌが発生しおも凊理を継続する必芁がありたす。

3. 凊理党䜓を䞭断させない

ルヌプ内で゚ラヌが発生しおも、そのセルをスキップしお次のセルの凊理に進みたいため、゚ラヌハンドリングを継続させる必芁がありたす。

On Error Resume Nextの䜿甚䞊の泚意

On Error Resume Nextは䟿利な機胜ですが、䜿い方を間違えるず重倧なバグの原因になりたす。

【泚意点】

  • ゚ラヌが発生しおも気づかない可胜性がある
  • 予期しない゚ラヌも無芖されおしたう
  • デバッグが困難になる

【適切な䜿甚䟋】

  • 発生する゚ラヌの皮類が予枬できる堎合
  • ゚ラヌが発生しおも凊理を継続したい明確な理由がある堎合
  • ゚ラヌ発生埌に適切な凊理(Err.Clearなど)を行う堎合

このコヌドでは、スピルセルや特殊なセルぞのアクセスずいう限定的な状況でのみ䜿甚しおおり、か぀各凊理埌に適切に゚ラヌ状態を管理しおいるため、問題ありたせん。

オプション7: 完了メッセヌゞの远加

目的

マクロの実行結果をナヌザヌに通知し、䜕個のセルがコピヌされたかを衚瀺したす。これにより、凊理が正垞に完了したこずを確認できたす。

実装コヌド

コピヌ凊理の完了埌に、以䞋のコヌドを远加したす。

' ステヌタスバヌに完了メッセヌゞを衚瀺
Application.StatusBar = successCount & " 個のセルをコピヌしたした。"
' 2秒間衚瀺(珟圚時刻 + 2秒埌たで埅機)
Application.Wait (Now + TimeValue("0:00:02"))
' ステヌタスバヌをクリア(通垞の衚瀺に戻す)
Application.StatusBar = False

コヌドの詳现解説

ステヌタスバヌぞの衚瀺

Application.StatusBar = successCount & " 個のセルをコピヌしたした。"

Application.StatusBarプロパティに文字列を蚭定するず、Excel画面の巊䞋にあるステヌタスバヌにメッセヌゞを衚瀺できたす。

&挔算子で、数倀(successCount)ず文字列を結合しお衚瀺したす。

衚瀺時間の制埡

Application.Wait (Now + TimeValue("0:00:02"))

Application.Waitメ゜ッドで2秒間埅機したす。これにより、ナヌザヌがメッセヌゞを読む時間を確保できたす。

ステヌタスバヌのクリア

Application.StatusBar = False

Application.StatusBarにFalseを蚭定するず、ステヌタスバヌが通垞の衚瀺(「準備完了」など)に戻りたす。

ステヌタスバヌに蚭定したメッセヌゞは、クリアするたで衚瀺され続けるため、必ずFalseを蚭定しおクリアする必芁がありたす。

メッセヌゞボックスずの比范

完了メッセヌゞを衚瀺する方法ずしお、MsgBoxを䜿う方法もありたす。

MsgBox successCount & " 個のセルをクリップボヌド履歎にコピヌしたした。", vbInformation
方法 メリット デメリット
ステヌタスバヌ ナヌザヌがボタンを抌す必芁がない
䜜業の邪魔にならない
䞀定時間埌に自動的に消える
芋逃す可胜性がある
詳现な情報を衚瀺しにくい
メッセヌゞボックス 確実にナヌザヌの泚意を匕く
詳现な情報を衚瀺できる
ナヌザヌがOKボタンを抌す必芁がある
頻繁に䜿うず煩わしい

頻繁に䜿甚するマクロの堎合は、ステヌタスバヌを䜿った通知の方が適しおいたす。重芁な゚ラヌメッセヌゞには、MsgBoxを䜿甚するずよいでしょう。

ステヌタスバヌの衚瀺䜍眮

ステヌタスバヌは、Excel画面の最䞋郚、巊偎に衚瀺されたす。通垞は「準備完了」や「ペヌゞ: 1/1」などの情報が衚瀺されおいる堎所です。

ステヌタスバヌが非衚瀺になっおいる堎合は、衚瀺タブの「ステヌタスバヌ」にチェックを入れるこずで衚瀺できたす。

オプション8: 倧量セル遞択時の確認

目的

耇数セルのコピヌには1セルあたり1秒の埅機時間が必芁なため、倧量のセルを遞択した堎合、凊理時間が長くなりたす。誀っお倧量のセルを遞択しおマクロを実行した堎合に備え、事前に確認ダむアログを衚瀺したす。

このオプションは、オプション4の「耇数セルを個別にコピヌ」を実装しおいる堎合にのみ有効です。オプション5の「タブ区切り・改行区切りで結合」を実装しおいる堎合は、1回のコピヌで完了するため、このオプションは䞍芁です。

実装コヌド

For Eachルヌプの前に、遞択セル数のチェックを远加したす。

' 倧量セル遞択時の確認(䟋: 10個以䞊)
' 凊理時間が長くなる堎合、ナヌザヌに確認を求める
If Selection.Cells.Count > 10 Then
    ' 確認ダむアログの結果を栌玍する倉数
    Dim confirmResult As VbMsgBoxResult
    ' 確認メッセヌゞを衚瀺(はい/いいえボタン)
    confirmResult = MsgBox(Selection.Cells.Count & " 個のセルが遞択されおいたす。" & vbCrLf & _
                          "凊理には玄 " & Selection.Cells.Count & " 秒かかりたす。" & vbCrLf & _
                          "続行したすか?", vbQuestion + vbYesNo, "確認")
    
    ' 「いいえ」が遞択された堎合
    If confirmResult = vbNo Then
        ' 凊理を䞭止する旚のメッセヌゞを衚瀺
        MsgBox "凊理を䞭止したした。", vbInformation, "äž­æ­¢"
        Exit Sub
    End If
End If

コヌドの詳现解説

セル数のしきい倀蚭定

If Selection.Cells.Count > 10 Then

ここでは10個をしきい倀ずしお蚭定しおいたすが、この倀は䜿甚状況に応じお調敎しおください。

しきい倀 凊理時間 掚奚甚途
5個 5秒 頻繁に䜿甚する堎合
10個 10秒 暙準的な䜿甚
20個 20秒 倧量コピヌも想定する堎合

確認ダむアログの衚瀺

Dim confirmResult As VbMsgBoxResult
confirmResult = MsgBox(Selection.Cells.Count & " 個のセルが遞択されおいたす。" & vbCrLf & _
                      "凊理には玄 " & Selection.Cells.Count & " 秒かかりたす。" & vbCrLf & _
                      "続行したすか?", vbQuestion + vbYesNo, "確認")

VbMsgBoxResult型は、MsgBox関数の戻り倀を栌玍するための型です。この型を䜿うこずで、ナヌザヌがどのボタンを抌したかを刀定できたす。

vbQuestion + vbYesNoにより、はおなマヌクのアむコンず「はい」「いいえ」のボタンが衚瀺されたす。

  • vbQuestion: はおなマヌクアむコン(?)を衚瀺
  • vbYesNo: 「はい」ず「いいえ」のボタンを衚瀺

ナヌザヌの遞択による分岐

If confirmResult = vbNo Then
    MsgBox "凊理を䞭止したした。", vbInformation, "äž­æ­¢"
    Exit Sub
End If

ナヌザヌが「いいえ」を遞択した堎合、confirmResultにはvbNoずいう定数倀が栌玍されたす。この堎合は凊理を䞭止し、メッセヌゞを衚瀺したす。

「はい」を遞択した堎合は、confirmResultにvbYesが栌玍され、If条件がFalseずなり、そのたた凊理が続行されたす。

より詳现な情報の衚瀺

確認メッセヌゞをより詳しくするこずもできたす。

' 掚定凊理時間を蚈算(1セルあたり1秒)
Dim estimatedTime As Long
estimatedTime = Selection.Cells.Count

' 時間を分ず秒の圢匏で衚瀺するための文字列
Dim timeMessage As String
If estimatedTime < 60 Then
    ' 60秒未満の堎合は秒だけ衚瀺
    timeMessage = estimatedTime & " 秒"
Else
    ' 60秒以䞊の堎合は「○分○秒」の圢匏で衚瀺
    timeMessage = estimatedTime \ 60 & " 分 " & estimatedTime Mod 60 & " 秒"
End If

' 蚈算した時間メッセヌゞを含む確認ダむアログを衚瀺
confirmResult = MsgBox(Selection.Cells.Count & " 個のセルが遞択されおいたす。" & vbCrLf & _
                      "凊理には玄 " & timeMessage & " かかりたす。" & vbCrLf & _
                      "続行したすか?", vbQuestion + vbYesNo, "確認")

この実装では、60秒以䞊かかる堎合は「○分○秒」ずいう圢匏で衚瀺したす。

  • \挔算子: 敎数陀算(商を求める)
  • Mod挔算子: 剰䜙(䜙りを求める)

たずえば、65秒の堎合

  • 65 \ 60 = 1(65を60で割った商)
  • 65 Mod 60 = 5(65を60で割った䜙り)
  • 結果: 「1分5秒」

オプションずの組み合わせに泚意

このオプション8は、オプション4の「耇数セルを個別にコピヌ」を実装しおいる堎合に有効です。

オプション5の「タブ区切り・改行区切りで結合」を実装しおいる堎合は、セル数に関わらず1回のコピヌで完了するため、このオプションは䞍芁です。

䞡方のオプションを実装する堎合は、どちらの凊理を実行するかをナヌザヌに遞択させる仕組みを远加する必芁がありたす。

たずめ

今回解説したWindowsクリップボヌド履歎ぞのセル倀連続コピヌ実装テクニックは、「セル内改行を含むテキストを他のアプリケヌションにスムヌズに貌り付けたい」「耇数のセル倀を効率的にクリップボヌド履歎に保存したい」ずいった実務における課題を䜓系的か぀確実に解決する実甚的な手法です。

通垞のコピヌ操䜜ではセル内改行を含むテキストにダブルクォヌテヌションが自動付䞎され、数匏バヌでの手動遞択が必芁ずいう煩雑さに察し、Selection.TextプロパティずDataObjectの組み合わせにより衚瀺通りの倀を盎接取埗できたす。実装時に特に重芁なのは、Microsoft Forms 2.0 Object Libraryの参照蚭定による基盀構築です。

たた、タブ区切り・改行区切りによる衚圢匏デヌタの䞀括コピヌ、結合セルぞの適切な察応、パスワヌド保護シヌトやスピル範囲ぞの堅牢な゚ラヌハンドリングずいった実装パタヌンにより、倚様な業務シヌンに察応した発展的なツヌルずしお成長させるこずが可胜で、倧量セル遞択時の確認ダむアログやステヌタスバヌ通知ずいったナヌザビリティ向䞊機胜ずの組み合わせにより、実務で安心しお䜿える完成床の高い業務支揎マクロずしお掻甚できたす。

次回は、フィルタ埌の可芖セルの列範囲を取埗する関数の実装テクニックに぀いお解説しおいく予定ですぜひご期埅ください!

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?