A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
こんにちは
簡単に作成してみようと思ったら、前段階がちょっとやっかいでした。
チェックボックスをリンクさせたセルの変更はシートのイベントで取得できないようなので、チェックボックスのクリックを個々に取得する必要があるようです。
処理そのものは共通のコードで可能なのですが、入り口をチェックボックスの数だけ作成しなければならないので
Sub チェック1_Click()
call checkbox_click(2)
End Sub
のようにして、対象行等を引数にして共通処理のマクロを呼び出せば良いことになります。
一方で、チェックボックスの数だけイベント処理のコードが必要になるので、数が大量にある場合には面倒そうに思います。
他の方法として、一定時間ごとにチェックして変化の有無を調べるというのもないことはないですが、無駄な処理が多くなるので、あまり良い方法とは思えません。
勝手ながら少し内容を変えて、行のダブルクリックで、似たような機能になるようにしてみましたので、ご参考まで。
A列にチェックボックスが並んでいるとして、B列にクリックした順序が数字で表示されるものと仮定しています。
添付図のA列はチェックボックスのように見えますが、実はただの枠線表示あるだけで、チェックマークはセルへ文字列”✔”をマクロから記入することで、チェックボックス的な動作を実現しています。
(面倒でないなら、上記で示したチェックボックス+マクロの方法でもきちんとできます)
テストのために、たくさんのイベント処理を記したくなかったので、この方式でテストしました。
シートのイベント処理に・・・
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim rng As Range
Dim i As Long, rw As Long
If Target.Column = 1 Then
Set rng = Range("B:B")
If Target.Value = "" Then
Target.Value = WorksheetFunction.Unichar(10004)
Target.Offset(0, 1).Value = WorksheetFunction.Count(rng) + 1
Else
Target.Value = ""
Target.Offset(0, 1).Value = ""
For i = 1 To WorksheetFunction.Count(rng)
rw = WorksheetFunction.Match(WorksheetFunction.Small(rng, i), rng, 0)
Cells(rw, 2).Value = i
Next i
End If
Cancel = True
End If
End Sub
として試してみました。
ただし、Unichar(10004)は✔の文字を表していますが、環境依存文字なので適切なものに変える必要があるでしょう。
他の方の指摘にあるようにチェックを外した際に連番でなくなる可能性があるので、外した場合は詰めて再度附番するようにしてあります。
ただし、番号の間に後から割り込ませたい場合には、少々操作テクニックが必要になってきます。
(「少数点以下の数字で一旦指定しておいて、空いているところをチェック→チェックを外す」ことで連番に変更されることを利用して割り込ませることが可能です)
※ 質問者様の実際の環境やセルの位置関係もわかりませんので、ご参考にでもなれば…
No.3
- 回答日時:
> なんとかカウントアップの方法ないものでしょうか
初期値1で、最後に入力した順番をどこかのセルに記録しといて、その値を加算して更新とか。
印刷順序の番号振られてる範囲での最大値を持ってきて、チェックされた行に最大値+1を追加していくとか。
で、出来なくは無いと思います。
が、
チェックしたけど間違えたのでチェック外したらどうするの?
よく見たら1番目を抜かしてたら、全部チェック外して再度チェックしなきゃならない?
とかって操作性を考慮すると、使いにくいです。
なので、一般的には例に出したようなインターフェースが利用されます。
No.2
- 回答日時:
もう1回クリックしてチェックを外したらどうするの?
質問のようにリストの順番指定するのに向いたユーザーインターフェースではないのでは。
Excelだとリボンを右クリック、「リボンのユーザー設定」みたいな、リストボックスとチェックボックス、項目を「上へ」「下へ」変更するボタンなんか使うのが一般的です。
OE でメールの表示項目を設定 - パソコントラブルQ&A
http://www.724685.com/weekly/qa050622.htm
No.1
- 回答日時:
シート データベースのA列に
チェックを入れた番号があるとして
別シートに
A B
1
2
3
・・・
と連番を入れた列を準備
B列には
=Index(データベース!B:B,Match(A2,データベース!A:A))
みたいにして関数で順番に探し出す。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルVBAでチェックボックスにチェックを入れる 1 2022/09/14 00:52
- Excel(エクセル) 表内で、Enterキーで横→行の最後入力したら次の行の先頭に移動するマクロを作りたい 3 2022/05/01 21:19
- Access(アクセス) Accessで予定表を作成しようとしてます。 テーブル フィールド名 連番 オートナンバー型 年月日 2 2023/07/23 11:40
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Visual Basic(VBA) エクセルでフォームのチェックボックスを使用した日付表示切替を作りたい 3 2023/07/11 10:47
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- その他(Microsoft Office) (至急)Googleのスプレッドシートの条件付き書式について 2 2022/09/11 08:50
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
このQ&Aを見た人はこんなQ&Aも見ています
-
「どうして捨てられないの?」前妻の物を捨てられない男性の心理って?
前妻の物を捨てられない理由に加え、捨てるための手段はあるのかを専門家に聞いてみた!
-
ダブルクリックをした順番に数字を表示させたい
Visual Basic(VBA)
-
チェックボックスが複数チェックされた場合で
HTML・CSS
-
エクセルで、チェックボックスにチェックをいれた行のデータのみを別シートに転記するには
Excel(エクセル)
-
-
4
[EXCEL]チェックボックスにレ点が入ったらリストを自動的に並べ変える方法
Excel(エクセル)
-
5
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
6
別のシートから値を取得するとき
Visual Basic(VBA)
-
7
エクセルの表をチェックボックスのチェックの有無でソートしたい
Excel(エクセル)
-
8
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
9
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
10
配列でデータが入っている要素を求める方法
Visual Basic(VBA)
-
11
EXCELで2つの数値のうち大きい方を採択する数式
Excel(エクセル)
-
12
エクセルで空白セルを含む列の最終行の値を取得する式を教えてください
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル マクロ オートフィ...
-
[EXCEL]ボタン押す→時刻が表に...
-
エクセルで特定の文字列が入っ...
-
エクセル 上下で列幅を変えるには
-
excelのデータで色つき行の抽出...
-
特定の文字がある行以外を削除...
-
Excel グラフのプロットからデ...
-
【Excel関数】UNIQUE関数で"0"...
-
結合されたセルをプルダウンの...
-
サイズの違うセル 並べ変え
-
VBAで色の付いているセルの行削除
-
エクセル 時間の表示形式AM/PM...
-
エクセルマクロで偶数行(又は...
-
Excel2007で、指定範囲の行高さ...
-
エクセルVBA 最終行を選んで並...
-
エクセルVBAのEntireRow.Hidden...
-
セルの色によって条件文をつけ...
-
AのセルとB行を比較して、一致...
-
エクセル マクロで数値が変っ...
-
色付き行の非表示について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル マクロ オートフィ...
-
エクセルで特定の文字列が入っ...
-
[EXCEL]ボタン押す→時刻が表に...
-
【Excel関数】UNIQUE関数で"0"...
-
特定の文字がある行以外を削除...
-
Excel グラフのプロットからデ...
-
excelのデータで色つき行の抽出...
-
AのセルとB行を比較して、一致...
-
結合されたセルをプルダウンの...
-
エクセル マクロで数値が変っ...
-
エクセル 上下で列幅を変えるには
-
VBAで色の付いているセルの行削除
-
excel 小さすぎて見えないセル...
-
A1に入力された文字列と同じ文...
-
罫線の斜線を自動で引くマクロ
-
アクティブになっている行をマ...
-
エクセル2016で時間を入力して...
-
EXCELマクロを使い、空白行では...
-
エクセルマクロで偶数行(又は...
-
セルの色によって条件文をつけ...
おすすめ情報
ご回答ありがとうございます
データベースのシート1と印刷シート2があり印刷シートはHLOOKUPでシート1の情報を反映させています。
データベースの頭の番号を参照して連続印刷のマクロを組んでいるのですが、チェックボックスにチェックした順で印刷できたら楽なため質問させていただきました。
なんとかカウントアップの方法ないものでしょうか
ご回答ありがとうございます
データベースのシート1と印刷シート2があり印刷シートはHLOOKUPでシート1の情報を反映させています。
データベースの頭の番号を参照して連続印刷のマクロを組んでいるのですが、チェックボックスにチェックした順で印刷できたら楽なため質問させていただきました。
なんとかカウントアップの方法ないものでしょうか