[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『チェックボックスで選択したセルの転記について』(八家)
こんばんわ
お聞きしたいことがあり投稿しました。
以下のようなシートがあるとします。
_A_________ B_______ C_______
1 チェックボックス?@ ミカン 2 チェックボックス?A モモ 3 チェックボックス?B レモン
A列のチェックボックスにチェックを入れると
C列に転送できるマクロを作りたいと考えています。
例えば、
チェックボックス?@と?Bをチェック後、ボタンを押すと、
C列に、・・・
_A_________ B_______ C_______
1 チェックボックス?@ ミカン ミカン 2 チェックボックス?A モモ レモン 3 チェックボックス?B レモン
・・という感じにしたいと考えています。
それが、以下のようなコードです。
==========================================
Sub ボタン6_Click()
Dim cb As CheckBox
Dim i As Long
Dim j As Long
Dim Tmp() As Variant
i = 0 j = 1
'チェックボックスをループ For Each cb In ActiveSheet.CheckBoxes
'チェックボックスがオンだったら If cb.Value = xlOn Then
'配列の要素数を指定 ReDim Preserve Tmp(i)
'配列にA〜C列の値を格納 Tmp(i) = Cells(j, 2) i = i + 1
End If
j = j + 1
Next cb
'配列に格納したデータをH列から転記 For i = 0 To UBound(Tmp) Cells(i + 1, 3) = Tmp(i)
Next i
End Sub
==========================================
ただ、ここで問題点があります。
チェックボックスのチェックを外した場合、うまく消えないのです。
例えば、チェックボックス?@?A?Bにチェックを入れると、
_A_________ B_______ C_______
1 チェックボックス?@ ミカン ミカン 2 チェックボックス?A モモ モモ 3 チェックボックス?B レモン レモン
・・となりますが、次に、例えば、チェックボックス?Bにチェックを外しても、
変化がないのです。(c列からレモンが消えない)
おそらく、最終セルとして処理すれば消えるのではないかと思っているのですが、
うまくいきません。
以上になります。恐れ入りますがご教授願います。
< 使用 Excel:Excel2019、使用 OS:Windows10 >
参考に Sub ボタン7_Click() Dim cb As CheckBox Dim i As Long Dim j As Long
'チェックボックスをループ For Each cb In ActiveSheet.CheckBoxes j = j + 1 Cells(j, 3).ClearContents 'チェックボックスがオンだったら If cb.Value = xlOn Then i = i + 1 Cells(i, 3).Value = Cells(j, 2).Value End If Next cb End Sub
(ピンク) 2022/06/27(月) 00:40
>配列にこだわらなくても 配列にこだわれば
Sub ボタン8_Click() Dim cb As CheckBox Dim i As Long Dim j As Long Dim Tmp() For Each cb In ActiveSheet.CheckBoxes i = i + 1 ReDim Preserve Tmp(1 To i) If cb.Value = xlOn Then j = j + 1 Tmp(j) = Cells(i, 2).Value End If Next cb Range("C1").Resize(UBound(Tmp)).Value = Application.Transpose(Tmp) End Sub
(ピンク) 2022/06/27(月) 12:57
配列コードもご紹介いただきありがとうございました!!
勉強させていただきます
(八家) 2022/06/27(月) 13:39
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.