会議室予約表を作成したく、下記のサイトを見つけて
自分の使用したい表を作成しているのですが思うようにいきません。
サイト↓
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ハマっている「お菓子」を教えて!
この世には、おいしいお菓子がありすぎて……。 次何を食べたらいいか迷っています。 みなさんが今、ハマっている「お菓子」を教えてください!
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
ホテルを選ぶとき、これだけは譲れない条件TOP3は?
ホテルを探す時、予約サイトで希望条件の絞り込みができる便利な世の中。 あなたは宿泊先を決めるとき「これだけは譲れない」と思う条件TOP3を教えてください。
-
【お題】絵本のタイトル
【お題】 「ないた あかおに」「ねないこ だれだ」「はらぺこあおむし」みたいだけど、一体これどういう内容?と思った絵本のタイトルを教えて下さい
-
「お昼の放送」の思い出
小学校から中学校、ところによっては高校まで お昼休みに校内放送で、放送委員が音楽とかおしゃべりとか流してましたよね。 最近は自分でもラジオができるようになって、そのクオリティもすごいことになっていると聞きます。
-
excelで会議室予約表の作成(マクロ)
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
エクセルVBA 配列からセルに「...
-
【VBA】【ユーザーフォーム_Lis...
-
Excel 範囲指定スクショについ...
-
Excel UserForm の表示位置
-
DataGridViewでグリッド内に線...
-
入力規則のリスト選択
-
【ExcelVBA】値を変更しながら...
-
エクセルのカーソルを非表示に...
-
【Excel VBA】一番右端セルまで...
-
Excelで空白セル直前のセルデー...
-
下記のマクロの説明(意味)を...
-
Excel VBAでCheckboxの名前を変...
-
Excel VBA IF文がうまく動作し...
-
VBA 特定のセルからoffsetされ...
-
特定の色のついたセルを削除
-
Excel VBA でFunctionプロシジ...
-
関数の引数でrangeを指定したとき
-
Excelセル内の特定座標に画像を...
-
【VBA】写真の貼り付けコードが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
エクセルVBA 配列からセルに「...
-
特定の色のついたセルを削除
-
Excel UserForm の表示位置
-
Excelで空白セル直前のセルデー...
-
【VBA】【ユーザーフォーム_Lis...
-
VBA:日付を配列に入れ別セルに...
-
【Excel VBA】一番右端セルまで...
-
Excel VBAでCheckboxの名前を変...
-
EXCEL VBA 文中の書式ごと複写...
-
入力規則のリスト選択
-
DataGridViewのフォーカス遷移...
-
【VBA】写真の貼り付けコードが...
-
CellEnterイベント仕様について
-
下記のマクロの説明(意味)を...
-
飛び地セルの空白判定
-
Excel 範囲指定スクショについ...
-
C# DataGridViewで複数選択した...
-
Excel VBA IF文がうまく動作し...
-
エクセルのカーソルを非表示に...
おすすめ情報
お二方ありがとうございました!
提示していただいたコード、サイトをもとに
なんとか理想に近い表ができました!
はじめに回答してくださった方をBAとします。