会議室予約表を作成したく、下記のサイトを見つけて
自分の使用したい表を作成しているのですが思うようにいきません。
サイト↓
https://macronoblog.com/2019/08/04/vbacode-1-%E4 …
「やりたいこと」
使用者名のリストを追加し、その人が選択されたらセルの色は緑、
他の人は青というような方法を追加したい
例 AAさん 2021/7/2 14:00~14:30 会議室1 セルの色:青
BBさん 2021/7/2 14:00~14:30 会議室2 セルの色:赤
CCさん 2021/7/3 11:00~12:00 会議室2 セルの色:緑
このサイトにあるコードでは、「Now」が使用されていて「今」の日付しか選択できませんが
自分の方では日付の選択は変えれるようになっています。
「考えたこと」
※日時選択、会議室の有無、時間判定は割愛させていただきます。
時間検索し、指定の部屋番号を塗りつぶしの部分だけを載せています。
W3に使用者名を入れるセルがあります。
If Range("W3").Value = "AA" Then
If Not .Cells(roomNo, i).Interior.Color = vbBlue Then
.Cells(roomNo, i).Interior.Color = vbBlue
If Range("W3").Value = "BB" Then
If Not .Cells(roomNo, i).Interior.Color = vbRed Then
.Cells(roomNo, i).Interior.Color = vbRed
If Range("W3").Value = "CC" Then
If Not .Cells(roomNo, i).Interior.Color = vbGreen Then
.Cells(roomNo, i).Interior.Color = vbGreen
Else
MsgBox "予約済みです"
Exit For
End If
End If
End If
End If
End If
End If
If文の書き方がおかしいのだと思います。
文章がぐちゃぐちゃですみません。
詳しい方、ご教授お願いします。
No.1ベストアンサー
- 回答日時:
おそらく、
W3が”AA”ならば・・・
W3が”BB”ならば・・・
のようにしたのでしょう、
>If Range("W3").Value = "AA" Then
>If Not .Cells(roomNo, i).Interior.Color = vbBlue Then
>.Cells(roomNo, i).Interior.Color = vbBlue
>If Range("W3").Value = "BB" Then・・・
このような書き方(入れ子構造)をすると、W3が”AA”かつ”BB”ならば・・・という意味になってしまいます。
少なくとも、
If Range("W3").Value = "AA" Then・・・
End If
If Range("W3").Value = "BB" Then・・・
End If
のようにしなければ各々の条件では動作しません。
また、このように1つの条件でいくつかの処理に分岐したいのであれば
SELECT Case構文がお勧めです。
例
SELECT Case Range("W3").Value
Case ”AA”
’W3が”AA”の時の処理
Case ”BB”
’W3が”BB”の時の処理
Case Else ’必要であれば
’その他の場合の処理
End Select
参考になりそうなページを紹介しておきます。
https://www.sejuku.net/blog/30642
http://officetanaka.net/excel/vba/statement/Sele …
No.2
- 回答日時:
こんにちは
前後関係が不明なので、よくわかりませんけれど…
>If文の書き方がおかしいのだと思います。
If ~~ End If の関係を確かめるのが宜しいかと。
エラーが出るなら、メッセージもヒントになります。
想像するところ、こんな感じになさりたいのかな?
(Notの判定をわざわざ行わなくても、結果は同じなので省略しています)
If Range("W3").Value = "AA" Then
.Cells(roomNo, i).Interior.Color = vbBlue
Else If Range("W3").Value = "BB" Then
.Cells(roomNo, i).Interior.Color = vbRed
Else If Range("W3").Value = "CC" Then
.Cells(roomNo, i).Interior.Color = vbGreen
Else
.Cells(roomNo, i).Interior.Color = xlNone
End If
同じ内容なら、Case文を用いる方が間違えが少なくなるかも。
Select Case Range("W3").Value
Case "AA": col = vbBlue
Case "BB": col = vbRed
Case "CC": col = vbGreen
Case Else: col = xlNone
End Select
.Cells(roomNo, i).Interior.Color = col
※ Range("W3").Value にはドットを付けていませんが、原文がそうなっているのでそのままです。
※ 登場人物は3人限定なのでしょうか?
人数が多い場合は、別にリストを作っておいてそれを参照して色を設定するような仕組みになさるのが宜しいかと。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/02/02 09:25
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBAで実行時エラー'424' オブジェクトが必要ですと出る 2 2022/10/07 09:25
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Excel(エクセル) VBAで “:” を含むセルの特定 2 2023/05/11 16:30
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
Excelで空白セル直前のセルデー...
-
Excel UserForm の表示位置
-
エクセルVBA 配列からセルに「...
-
EXCEL VBA 文中の書式ごと複写...
-
[VBA]変数を利用して時間を検索...
-
Excel VBA IF文がうまく動作し...
-
【Excel VBA】一番右端セルまで...
-
VBA にて、条件付き書式で背景...
-
複数指定セルの可視セルのみを...
-
関数の引数でrangeを指定したとき
-
VBAでユーザーフォームにセル値...
-
Excel VBAでCheckboxの名前を変...
-
入力規則のリスト選択
-
Rangeの範囲指定限界
-
VBA 複数条件の分岐処理の上手...
-
下記のマクロの説明(意味)を...
-
[C#]DataGridViewのVirtual Mod...
-
VBAの一次元配列から二次元配列へ
-
エクセルVBAで、セル内のテキス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
エクセルVBA 配列からセルに「...
-
Excel UserForm の表示位置
-
Excelで空白セル直前のセルデー...
-
【Excel VBA】一番右端セルまで...
-
EXCEL VBA 文中の書式ごと複写...
-
VBA にて、条件付き書式で背景...
-
特定の色のついたセルを削除
-
【VBA】【ユーザーフォーム_Lis...
-
VBA 複数条件の分岐処理の上手...
-
入力規則のリスト選択
-
【VBA】写真の貼り付けコードが...
-
Excel VBA IF文がうまく動作し...
-
VBA:日付を配列に入れ別セルに...
-
VBAでユーザーフォームにセル値...
-
Excel VBAでCheckboxの名前を変...
-
エクセルの合計を自動で表示さ...
-
関数の引数でrangeを指定したとき
-
複数指定セルの可視セルのみを...
-
DataGridViewでグリッド内に線...
おすすめ情報
お二方ありがとうございました!
提示していただいたコード、サイトをもとに
なんとか理想に近い表ができました!
はじめに回答してくださった方をBAとします。