No.4ベストアンサー
- 回答日時:
以下のようにしてください
----------------------------------------------
Option Explicit
Private Sub CheckBox1_Click()
Call setCellValue(CheckBox1.Object, 1)
End Sub
Private Sub CheckBox2_Click()
Call setCellValue(CheckBox2.Object, 2)
End Sub
'途中、省略 CheckBox3~CheckBox19も同様につくる
Private Sub CheckBox20_Click()
Call setCellValue(CheckBox20.Object, 20)
End Sub
'チェックボックスに対応するセルの設定
Private Sub setCellValue(ByRef cBox As Object, ByVal colBias As Long)
Dim row As Long
Dim sheetName As String
sheetName = GetSheetName
MsgBox ("sheetname=" & sheetName)
Worksheets(sheetName).Select
row = getRow()
If row = 0 Then
Exit Sub
End If
Cells(row, colBias + 8).Select
If cBox.Value = True Then
Cells(row, colBias + 8).Value = 1
Else
Cells(row, colBias + 8).Value = ""
End If
End Sub
'チェックボックスが設定すべき行を取得する関数
Private Function getRow()
Dim i As Long
Dim colmax As Long
Dim rowmax As Long
'最後の行、列を取得
ActiveCell.SpecialCells(xlLastCell).Select
colmax = ActiveCell.Column
rowmax = ActiveCell.row
'A列に値が設定されている最大の行数を取得する
For i = 1 To rowmax
If Cells(i, 1).Value = "" Then
getRow = i - 1
Exit Function
End If
Next
'最後までA列に値があれば最後の行とする
getRow = rowmax
End Function
'条件に従いシート名を決定する
Private Function GetSheetName()
Dim jyoken As Long
jyoken = 3
Select Case jyoken
Case 1
GetSheetName = "sheet1"
Case 2
GetSheetName = "sheet2"
Case 3
GetSheetName = "sheet3"
Case 4
GetSheetName = "sheet4"
Case 5
GetSheetName = "sheet5"
Case 6
GetSheetName = "sheet6"
End Select
End Function
----------------------------------------------
GetSheetNameで処理対象となるシート名を決定しています。
ここは、あなたの条件を記述してください。
GetSheetNameでどのような場合でもsheet1~sheet6の何れかを返すようにしてください。
シート名が返されたとき、そのシートに対して処理します。
実際に返す名前は、sheet1でなくてもかまいません。(aaaのシートが存在すればaaaなどでもOKです。)
MsgBox ("sheetname=" & sheetName)でシート名を表示しています。不要であればコメントアウトしてください。
No.3
- 回答日時:
>もうひとつ教えてください。
>同様のシートが複数ある場合、どうしたらよいですか?
具体的には、どのように複数あるのですか?
例えば、sheet1,sheet2,sheet3,sheet4とあって、
チェックボックス1をクリックした時、sheet1,sheet2,sheet3,sheet4の全てに同じ動作をするようにしたいのでしょうか?
それとも、ある条件では、sheet1のみを対象にし、別の条件では、sheet2を対象にしたいということでしょうか?
その場合は、その条件を具体的に提示していただかないと、回答できません。
No.2
- 回答日時:
チェックボックス1がチェックされたとき、何行のI列に設定するかをどのように決めるかですが、
とりあえず、A列に値が設定されている最大の行に設定するようにしました。
もし、A,B,C,D,E,F,G,Hの全てに値が設定されている最大の行が望みであれば、その旨補足してください。
プログラムは以下のようになります。
----------------------------------------------------
Option Explicit
Private Sub CheckBox1_Click()
Call setCellValue(CheckBox1.Object, 1)
End Sub
Private Sub CheckBox2_Click()
Call setCellValue(CheckBox2.Object, 2)
End Sub
'途中、省略 CheckBox3~CheckBox19も同様につくる
Private Sub CheckBox20_Click()
Call setCellValue(CheckBox20.Object, 20)
End Sub
'チェックボックスに対応するセルの設定
Private Sub setCellValue(ByRef cBox As Object, ByVal colBias As Long)
Dim row As Long
row = getRow()
If row = 0 Then
Exit Sub
End If
Cells(row, colBias + 8).Select
If cBox.Value = True Then
Cells(row, colBias + 8).Value = 1
Else
Cells(row, colBias + 8).Value = ""
End If
End Sub
'チェックボックスが設定すべき行を取得する関数
Private Function getRow()
Dim i As Long
Dim colmax As Long
Dim rowmax As Long
'最後の行、列を取得
ActiveCell.SpecialCells(xlLastCell).Select
colmax = ActiveCell.Column
rowmax = ActiveCell.row
'A列に値が設定されている最大の行数を取得する
For i = 1 To rowmax
If Cells(i, 1).Value = "" Then
getRow = i - 1
MsgBox ("getRow=" & getRow)
Exit Function
End If
Next
'最後までA列に値があれば最後の行とする
getRow = rowmax
End Function
---------------------------------------------------------------
No.1
- 回答日時:
どのようにしたいのかが、良く判りません。
質問1.チェックボックス1をチェックすると、I17のセルに1を設定しますが、
I18のセルに1を設定するのは、どのタイミングですか?
質問2.チェックボックス1をチェックして、I17のセルに1設定した後、
チェックボックス1のチェックをはずした場合は、どのような結果を期待しますか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
EXCELのSheet番号って変更でき...
-
マクロ実行後に別シートの残像...
-
VBA 実行時エラー1004 rangeメ...
-
Excel VBA オートフィルターで...
-
Unionでの他のシートの参照につ...
-
VBA 空白行に転記する
-
Excel2013で切り取り禁止
-
Changeイベントで複数セルへの...
-
VBA Userformで一部別シートに...
-
グラフマクロで系列を変数にす...
-
VBAで変数の数/変数名を動的に...
-
Count Ifのセルの範囲指定に変...
-
Excel VBAで、散布図のデータ範...
-
100万件越えCSVから条件を満た...
-
VBA webクエリをループさせる...
-
VBA別シートの最終行の次行へ転...
-
VBA 別ブックからの転記の高速...
-
VBAを使って複数のシートから抽...
-
複数シートの複数列に入力され...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
EXCELのSheet番号って変更でき...
-
VBA 空白行に転記する
-
マクロ実行後に別シートの残像...
-
VBAで変数の数/変数名を動的に...
-
VBA別シートの最終行の次行へ転...
-
Changeイベントで複数セルへの...
-
アクセスからエクセルへ出力時...
-
VBA 別ブックからの転記の高速...
-
Count Ifのセルの範囲指定に変...
-
【VBA】特定の条件でセルをコピー
-
VBA 実行時エラー1004 rangeメ...
-
ExcelのVBマクロを、バックグラ...
-
100万件越えCSVから条件を満た...
-
複数シートの複数列に入力され...
-
楽天RSSからエクセルVBAを使用...
-
Excel2013で切り取り禁止
-
Excel VBA オートフィルターで...
-
Unionでの他のシートの参照につ...
-
VBAを使って複数のシートから抽...
おすすめ情報
tatsu99さん
I18に1が入るタイミングは、A18からH18にデータが入った時点です。
データが入る業と1が入る業を一致するようにしたいです。
AからHにデータを入れるVBAで作成してあります。
チェックボックスを外した場合、空欄にしたいです。
tatsu99さん
もうひとつ教えてください。
同様のシートが複数ある場合、どうしたらよいですか?
tatsu99さん
基本シートがあり、条件によって複数のシートにデータを抽出しています。
その条件に合うシートのみを対象としたいです。
基本シートから条件によっての振り分けはselect caseで行っています。
A条件ならシート1
B条件ならシート2
C条件ならシート3
F条件ならシート6
となります。