大変困っています。
9月の連休に向けて、勤務シフトを組むにあたり、
Excelで入力シートを作っています。
何月何日→○、×をリストから選んでもらう形式です。
そこで、たとえばすべて×という選択ができないように設定したいのです。
当方100人規模のシフトを作っており、
全員に口頭で言うのもなんですので、デフォルトで全部×を禁じたいのです。
いろいろ調べていますが、
プルダウン設定で「入力規則」を使用しており、
範囲内で「×」の個数を数え、一定数以上ならあるセルに「FALSE」が
出るようにはしたのですが、
「入力規則」で違ったデータを入力したときのように、
別ウインドウで禁止テロップを出したいのです。
何か方法ありますでしょうか???
No.3ベストアンサー
- 回答日時:
今家にあるのはExcel2002なので、それで説明します。
(1)メニューの「ツール:マクロ:Visual Basic Editor」をクリックする。
(2)「Microsoft Visual Basic - ブック名」の画面が表示されるので、左側に表示されている「Sheet1(シート名)」をダブルクリックする。
(3)表示される「ブック名 - Sheet1(コード)」の画面に下記のマクロを記述する。(コピー&ペーストしてください)
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row >= 5 And Target.Row <= 35 And Target.Column >= 4 And Target.Column <= 5 Then
If Not Cells(44, 14).Value Then
MsgBox "エラーメッセージ"
End If
End If
End Sub
("エラーメッセージ"の部分は表示したいメッセージを記述してください。)
以上で完了です。
Excel2003はExcel2002と同じですが、Excel2007は画面のメニューやボタンがExcel2003とは大幅に変わっています。
Excel2007の場合、「Microsoft Visual Basic - ブック名」の画面を表示できれば後は同じです。
もしどうしても「Microsoft Visual Basic - ブック名」の画面を表示できない場合は明日また回答しますので、状況を知らせてください。
I5:K35の部分は意味が分からなかったので無視しています。
大変ご丁寧な指導、本当にありがとうございました!!
アルファベットの列が数字に置き換わるわけですね。
理想どおりにエラーメッセージが出て満足しています。
甘えついでにもう少しお願いです。あつかましくてすいません。
例えば、このままだと、別に×のままでもエラーをスルーすれば
保存できるわけですが、×を解除しないと次に進めないような
設定ってできますか???
No.4
- 回答日時:
>×を解除しないと次に進めないような設定ってできますか?
次に進めないような設定というのは分かりませんが、別の方法として次の2つが考えられます。
1.メッセージを出した後に×を強制的に消す。
2.終了するときに再度チェックして、エラーなら終了できないようにする。
1の方法は、
MsgBox "エラーメッセージ"
の後に、
Target.Value = ""
を追加してください。
そうすると、OKを押した直後×がクリアされます。
2の方法は、次のコードをThisWorkbookのコード画面に記述してください。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not Cells(44, 14).Value Then
MsgBox "エラーメッセージ"
Cancel = True
End If
End Sub
上記の「Cancel = True」で閉じる処理がキャンセルされますので、エラーを解消しない限り終了することができなくなります。
ThisWorkbookのコード画面は、「Microsoft Visual Basic - ブック名」の画面の左側に表示されている「ThisWorkbook」をダブルクリックすると表示されます。
No.2
- 回答日時:
>適当なセルを選択しておいて、「マクロ」を選んで、この構文を入力した後に、どうすれば登録できるのでしょう??
マクロの登録はそういう方法ではありません。
Excelのバージョンによっても操作方法が少し違います。お使いのExcelのバージョンは何でしょうか。
また、前述のマクロのコードは完全ではありません。マクロ初心者ということであれば、必要ならある程度使えるものを作ってみますので次のことを教えてください。
・日付は横に並べているのですか?それとも縦ですか?
・○、×を入力するセルの範囲は?
・「FALSE」を表示するセルの範囲は?
・「FALSE」を表示するセルの計算式は?
・禁止テロップを出したいシートは1つだけですか?複数ありますか?
・複数ある場合、禁止テロップを出す必要がないシートもありますか?
・禁止テロップを出す必要がないシートがある場合、出すか出さないかをシート名で区別できますか?
なお、前述のマクロのコードで、1行目が間違ってました。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ではなくて、
Private Sub Worksheet_Change(ByVal Target As Range)
でした。
大変親切にありがとうございます。
それではお言葉に甘えさせていただきます。
Excelは2007ですが、2003対応の職員もいるので、両方対応できるようにとは思っています。
・日付は縦に並んでおり、時間枠5枠(2+3)が横に並んでいます。
・○・×に関しては、D5:E35と、I5:K35(31日間の場合)になります。
このセルではすべてリストから○×を選ぶ方式です。
・FALSEを出すために、N43くらいを=COUNTIF(D5:E35,"×")として
N44くらいに=IF(N43<20,TRUE,FALSE)で、多くの枠で×を選択しすぎ
るとN44にFALSEが表示されます。
・シートはひとつだけですので、禁止テロップはそのシートだけでOKです。
休みの日に大変な親切に敬服しております。
どうぞよろしくお願いします。
No.1
- 回答日時:
BVAで、セルが変更されたときに「FALSE」になったかどうかを調べてメッセージを出すことができます。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Cells(?, ?) = "FALSE" Then
MsgBox "エラーメッセージ"
End If
End Sub
引数のTargetは変更されたセルのRangeですので、誰の分を入力したかを判断することもできます。
本当にありがとうございます。
マクロはスーパー初心者な私ですので、
ちょこっと基礎的なことをお教えいただけると幸いです。
適当なセルを選択しておいて、
「マクロ」を選んで、この構文を入力した後に、
どうすれば登録できるのでしょう??
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Excel(エクセル) Excel ドロップダウンリスト(入力規則)に関してです データの入力規則で元データ79000行のド 3 2023/07/17 10:06
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) Excelのプルダウンメニューの内容を人によって可変する方法 2 2023/03/28 14:52
- Excel(エクセル) データ入力規則リスト 空白を無視 3 2022/07/13 15:11
- Visual Basic(VBA) VBA ドロップダウンリストを残して値のみクリア 2 2022/10/27 05:42
- Excel(エクセル) 余計なお世話的な「入力規則」?対策は? 2 2023/01/14 12:39
- その他(Microsoft Office) エクセルの数式で教えてください。 2 2023/01/12 13:51
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelで小数点0を表示させる方法
-
エクセル 絶対値の合計
-
エクセルで0.0と表示したい
-
他シートのある列を検索して一...
-
EXCEL VBA 選択範囲をTargetに
-
エクセルのセルに長文が入力で...
-
エクセルで網掛けをしたセルを...
-
エクセルの文字列を結合しても...
-
マクロ クリックしたら色変わる
-
エクセル スペースを排除するには
-
エクセルの使い方で困っています
-
Lotus123 2000のSUM関数の範囲指定
-
エクセルで089と数字を入れ...
-
エクセルでコピー。結合もセル...
-
Excelでの関数数式は分かるので...
-
エクセル 小数点第2位 切捨て...
-
EXCEL フィルターの使い方
-
エクセルの自動計算方法につい...
-
エクセル .50以下で切り捨て、...
-
Excelで実際の数値も四捨五入さ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelで小数点0を表示させる方法
-
エクセル 絶対値の合計
-
エクセルで0.0と表示したい
-
【EXCEL】関数で計算された数字...
-
他シートのある列を検索して一...
-
vlookupで返された値が空白だっ...
-
エクセルの文字列を結合しても...
-
Excelで合計の金額を違うセルに...
-
セルの数式を計算させないで文...
-
エクセルで網掛けをしたセルを...
-
エクセル .50以下で切り捨て、...
-
エクセルで文字を180度回転...
-
Googleスプレッドシートで合計...
-
numbersで累計を計算するには
-
EXCEL VBA 選択範囲をTargetに
-
エクセル 背景色のついたセル位...
-
Excel VBAにてUserFormのTextBo...
-
Excelで小数点の位置を揃えるの...
-
EXCELで上位10個のデータを平均...
-
-EXCEL- 突然、関数が無効に...
おすすめ情報