大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、チェックした値を、別シートに転記したい場合は、チェックボックスをループして、「Copy」で転記します。「CheckBoxes」か「リンクしたセル値」を使えば、チェックボックスのOnとOffを取得できます。チェックしたデータを別シートに転記する方法について、マスターしていきましょう。

はじめに

この記事では、チェックボックスでチェックしたデータを、別シートに転記する方法について、ご紹介します。

やり方としては、次の2つの方法があります。

  • CheckBoxesを使う
  • リンクしたセル値を使う

「CheckBoxes」を使う方法は、チェックボックスの名前を連番にする必要があります。

リンクしたセル値を使う方法は、あらかじめチェックボックスとセルをリンクする必要があります。

VBAコードとしてシンプルなのは、リンクしたセル値を使う方法になります。

では、チェックボックスでチェックしたデータを、別シートに転記する方法について、解説していきます。

本記事の内容を動画でまとめています

VBAコードの作成手順を動画にて確認できます。

目次から見たい項目へ移動すると便利ですよ。

目次

チェックしたデータを別シート転記したい

やりたい内容は、チェックボックスでチェックした値を、別シートに転記したいということになります。

やりたい内容

チェックボックスでチェックした値を、別シートに転記してみます。

チェックしたデータを別シートに転記したい

チェックボックスしたデータを別シートに転記したいです。

チェックボックスしたデータを別シートに転記したいです

チェックボックスしたデータを別シートに転記したいです。

別シートにデータを転記したいです。

別シートにデータを転記したいです

別シートにデータを転記したいです。

実行した結果

こんな感じで、データを転記したいです。

こんな感じで、データを転記したいです

こんな感じで、データを転記したいです。

やり方としては、次の2つの方法があります。

  • CheckBoxesを使う
  • リンクしたセル値を使う

それぞれVBAコードを記載します。

CheckBoxesを使って別シート転記

「CheckBoxes」を使って、チェックした値を別シートに転記するというのをやってみます。

チェックボックス自体を操作するという感じになります。

チェックボックス名を連番で作成

「CheckBoxes」を使う場合は、名前を連番で作成する必要があります。

次のように「チェック1」~「チェック7」と名前を付けます。

連番で名前を付ける

1つ目のチェックボックスです。

チェックボックスを連番で作成します

2つ目のチェックボックスです。

チェックボックスを連番で作成します

3つ目のチェックボックスです。

チェックボックスを連番で作成します

4つ目のチェックボックスです。

チェックボックスを連番で作成します

5つ目のチェックボックスです。

チェックボックスを連番で作成します

6つ目のチェックボックスです。

チェックボックスを連番で作成します

7つ目のチェックボックスです。

チェックボックスを連番で作成します

連番で名前を付けることで、「CheckBoxes」を使ってシートと対応させることができます。

VBAコード

「CheckBoxes」を使って、チェックした値を別シートに転記するVBAコードです。

Sub TEST1()
  
  'Sheet2をクリア
  Sheets("Sheet2").Range("A2:C1000").ClearContents
  
  For i = 1 To Sheets("Sheet1").CheckBoxes.Count
    'チェックがついている場合
    If Sheets("Sheet1").CheckBoxes("チェック" & i).Value = xlOn Then
      '最終行+1行に、コピー
      With Sheets("Sheet2").Cells(Rows.Count, "A").End(xlUp)
        Sheets("Sheet1").Cells(i + 1, "B").Resize(, 3).Copy .Offset(1, 0)
      End With
    End If
  Next
  
End Sub

チェックを入れて実行してみます。

チェックを入れて実行

チェックを入れて実行してみます

実行すると、チェックした値を別シートに転記できます。

別シートに転記できた

実行すると、チェックした値を別シートに転記できます

実行すると、チェックした値を別シートに転記できました。

簡素化したVBAコード

転記する際に最終行ではなく、最初に入力する行数を指定してから、転記することもできます。

「Sheet2」の最終行を取得しないで、新しい変数「j」を使って、別シートに転記するVBAコードです。

Sub TEST2()
  
  'Sheet2をクリア
  Sheets("Sheet2").Range("A2:C1000").ClearContents
  
  j = 1
  For i = 1 To Sheets("Sheet1").CheckBoxes.Count
    'チェックがついている場合
    If Sheets("Sheet1").CheckBoxes("チェック" & i).Value = xlOn Then
      j = j + 1
      'チェックしたデータをコピー
      With Sheets("Sheet2")
        Sheets("Sheet1").Cells(i + 1, "B").Resize(, 3).Copy .Cells(j, "A")
      End With
    End If
  Next
  
End Sub

こっちの方がVBAコードがシンプルになります。

チェックを入れて、実行してみます。

チェックを入れて実行

チェックを入れて、実行してみます

チェックした値を転記できます。

別シートに転記できた

チェックした値を転記できます

チェックした値を転記できました。

リンクしたセルの値を使う

次は、「リンクしたセルの値」を使うという方法で、値を転記してみます。

チェックボックスとセルをリンクする

まずは、チェックボックスとセルをリンクする必要があります。

セルとリンクする

チェックボックスで右クリックして、コントロールの書式設定を選択します。

チェックボックスで右クリックして、コントロールの書式設定を選択します

リンクするセルのボタンを選択します。

リンクするセルのボタンを選択します

リンクするセルを指定します。

リンクするセルを指定します

セルとリンクできます。

セルとリンクできました

他のチェックボックスも、セルとリンクします。

他のチェックボックスも、セルとリンクします

これで、チェックボックスとセルとリンクすることができます。

場所をとってしまうので、リンクしたセルを、チェックボックスのところに移動します。

リンクしたセルを移動

リンクしたセルを、チェックボックスのところに移動します

チェックボックスが見ずらいので、表示形式で「;;;」を入力して、非表示にします。

表示形式で非表示にする

表示形式で「;;;」を入力して、非表示にします

これで、チェックボックスとセルをリンクできます。

チェックボックスとセルをリンクできた

チェックボックスとセルをリンクできました

チェックボックスとセルをリンクできました。

VBAコード

では、リンクしたセルを使って、チェックした値を別シートに転記してみます。

リンクしたセル値を使って、チェックした値を別シート転記するVBAコードです。

Sub TEST3()
  
  'Sheet2をクリア
  Sheets("Sheet2").Range("A2:C1000").ClearContents
  
  For i = 2 To Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row
    'チェックがついている場合
    If Sheets("Sheet1").Cells(i, "A") = True Then
      '最終行+1行目にコピー
      With Sheets("Sheet2").Cells(Rows.Count, "A").End(xlUp)
        Sheets("Sheet1").Cells(i, "B").Resize(, 3).Copy .Offset(1, 0)
      End With
    End If
  Next
  
End Sub

チェックボックスをチェックして、実行します。

チェックを入れて実行

チェックボックスをチェックして、実行します

実行すると、チェックした値を別シートに転記できます。

別シートに転記できた

チェックした値を別シートに転記できました

チェックした値を別シートに転記できました。

簡素化したVBAコード

先ほどと同じように、最初に入力する行数を指定して、VBAコードをシンプルにすることもできます。

「Sheet2」の最終行を取得しないで、新しい変数「j」を使って、別シートに転記するVBAコードです。

Sub TEST4()
  
  'Sheet2をクリア
  Sheets("Sheet2").Range("A2:C1000").ClearContents
  
  j = 1
  For i = 2 To Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row
    'チェックがついている場合
    If Sheets("Sheet1").Cells(i, "A") = True Then
      j = j + 1
      '最終行+1行目にコピー
      With Sheets("Sheet2")
        Sheets("Sheet1").Cells(i, "B").Resize(, 3).Copy .Cells(j, "A")
      End With
    End If
  Next
  
End Sub

チェックボックスをチェックして、実行します。

チェックを入れて実行

チェックボックスをチェックして、実行します

実行すると、チェックした値を別シートに転記できます。

別シートに転記できた

チェックした値を別シートに転記できました

チェックした値を別シートに転記できました。

おわりに

この記事では、チェックボックスでチェックしたデータを、別シートに転記する方法について、ご紹介しました。

やり方としては、次の2つの方法があります。

  • CheckBoxesを使う
  • リンクしたセル値を使う

「CheckBoxes」を使う方法は、チェックボックスの名前を連番にする必要があります。

リンクしたセル値を使う方法は、あらかじめチェックボックスとセルをリンクする必要があります。

VBAコードとしてシンプルなのは、リンクしたセル値を使う方法になります。

うまくチェックボックスを使って、ユーザーファーストなVBAコードを作成していきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す