• ベストアンサー

excelで会議室予約表の作成(マクロ)

よろしくお願いいたします。 上司からの依頼で困っています。 添付のような、マクロボタンを設定し、 ・登録ボタンを押したら該当時間の下の表のセルが塗りつぶされる ・削除ボタンを押したら削除される ・表のセルをクリックしたら、名前、内容などが表示される ように、することは可能でしょうか? マクロは初心者ですが絶対に完成させろといわれてしまいました。。。 そもそも、このような作りこみは可能でしょうか? ちなみに、この表は数人が共有して使う予定です。 以上、お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

>表のセルをクリックしたら、名前、内容などが表示される これ難しいですよ。一つのセルに複数の情報を突っ込む のは見苦しいし、かと言って他にデータを保存できる場所は 無くはありませんが、取り扱いが面倒です。そこで、セルの コメントにしてはどうでしょう。コメントならマウスポインタが 移動しただけで、自動的に表示/消去されますし、扱いも 簡単です。上司にネゴして了解してもらってください。 (1)次のシートを用意します。  人名シート:A1、A2、・・・に利用者名が記録される。  ここには領域名(例えば「利用者リスト」)を付ける。  原紙シート:年月別の記録シートのコピー元(不可視) (2)原紙シートには以下のコントロールを配置します。  コンボボックス:入力者   ネタ(利用者リスト)の設定方法は分かりますよね。  テキストボックス:備考  コマンドボタン:登録  コマンドボタン:削除  コマンドボタン:シート追加  使用日と時間は予め該当するセルを選んでおきます。  画像で言うと、B11:D11を選択してから登録すると、  m/01の08:00~09:30という具合です。 先ず、シートの追加から考えます。 Private Sub シート追加_Click() Dim シート数 As Long Dim 対象年月 As Text Dim 年月 As Date Dim シート As WorkSheet Dim エラー As Long 'シート数を求める シート数 = ThisWorkbook.WorkSheets.Count 'もし2シートなら対象年月を入力させる If シート数 < 3 Then     対象年月 = InputBox("対象年月をyyyy/mm形式で入力します", _                  "年月の指定")     'キャンセル時は終了する     If 対象年月 = "" Then Exit Sub     '形式を調べる     If Not IsDate(対象年月 & "/01 00:00:00") Then         MsgBox "対象年月が間違っています", vbCritical, "エラー"         Exit Sub     End If     '日付に変換する     年月 = CDate(対象年月 & "/01") Else     '最後のシートの名前から日付に変換する     対象年月 = ThisWorkbook.WorkSheets(シート数).Name     '日付に変換する     年月 = CDate(対象年月 & "/01")     '翌月にする     年月 = DateAdd("M", 1, 年月)   End If 'シート名を編集する 対象年月 = Format(年月, "yyyy-mm") '最終シートを取得する Set シート = ThisWorkbook.WorkSheets(シート数) 'コピーする On Error Resume Next ThisWorkbook.WorkSheets("原紙シート").Copy After:=シート エラー = Err.Number On Error GoTo 0 'エラーなら終了する If エラー <> vbNormal Then     MsgBox "シートが多過ぎます", vbCritical, "エラー"     Exit Sub End If '最後のシートを取得する Set シート = ThisWorkbook.WorkSheets(シート数 + 1) '名前を変更する シート.Name = 対象年月 End Sub あと、登録と削除ですが、こちらは次回とさせてください。 ちょっと難しかったですか?

sei_s95
質問者

お礼

ありがとうございました。 お陰様でなんとか形になりました。 本当にご丁寧に、助かりました。

sei_s95
質問者

補足

ご丁寧にありがとうございます! 難しいですが、まずはやってみます。 表示はコメントで大丈夫です。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

前回の続きで、登録と削除です。 どちらもボタンのクリックイベントです。 Private Sub 登録_Click() Dim IX As Long Dim 数 As Long Dim 行 As Long Dim 名 As String Dim 記 As String '複数行になっていたらエラー If Selection.Rows.Count > 1 Then     MsgBox "複数行は選択できません", vbCritical, "エラー"     Exit Sub End If '行位置を取得する 行 = Selection.Row '行位置の有効性を調べる If Me.Cells(行, 1) = "" Then     MsgBox "指定行は無効です", vbCritical, "エラー"     Exit Sub End If '列数を求める 数 = Selection.Columns.Count '左端が有効範囲か調べる IX = Selection.Columns(1).Column If IX >= 2 And IX <= 27 Then     '右端が有効範囲か調べる     IX = Selection.Columns(数).Column End If If IX < 2 Or IX > 27 Then     MsgBox "選択列が有効範囲外です", vbCritical, "エラー"     Exit Sub End If '先約がないか調べる For IX = 1 To 数     If Selection(IX).Interior.ColorIndex <> xlNone Then Exit For Next If IX <= 数 Then     MsgBox "予約済みの時間帯を含みます", vbCritical, "エラー"     Exit Sub End If '人名が空欄か調べる 名 = 入力者.Text If 名 = "" Then     MsgBox "入力者が空欄です", vbCritical, "エラー"     Exit Sub End If '備考が空欄か調べる 記 = 備考.Text If 記 = "" Then     MsgBox "備考が空欄です", vbCritical, "エラー"     Exit Sub End If '背景色を塗る Selection.Interior.ColorIndex = 44 '★色は適宜直す 'コメントを設定する For IX = 1 To 数     On Error Resume Next     Selection(IX).Comment.Delete     On Error GoTo 0     Selection(IX).AddComment 名 & vbNewLine & 記 Next End Sub '★====================================== Private Sub 削除_Click() Dim IX As Long Dim 数 As Long Dim 行 As Long '複数行になっていたらエラー If Selection.Rows.Count > 1 Then     MsgBox "複数行は選択できません", vbCritical, "エラー"     Exit Sub End If '行位置を取得する 行 = Selection.Row '行位置の有効性を調べる If Me.Cells(行, 1) = "" Then     MsgBox "指定行は無効です", vbCritical, "エラー"     Exit Sub End If '列数を求める 数 = Selection.Columns.Count '左端が有効範囲か調べる IX = Selection.Columns(1).Column If IX >= 2 And IX <= 27 Then     '右端が有効範囲か調べる     IX = Selection.Columns(数).Column End If If IX < 2 Or IX > 27 Then     MsgBox "選択列が有効範囲外です", vbCritical, "エラー"     Exit Sub End If '背景色を初期値にする Selection.Interior.ColorIndex = xlNone 'コメントを削除する For IX = 1 To 数     On Error Resume Next     Selection(IX).Comment.Delete     On Error GoTo 0 Next End Sub 尚、シート追加時に1列目に日にちを入れるのを 忘れてました。1日から記入できるよう改造してください。 では検討を祈ります。

全文を見る
すると、全ての回答が全文表示されます。
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

セキュリティの関係で画像は見えませんが、 物理的な機能は可能です。 但し、会議室予約では最低限、次の情報が 必要です。 (1)開始日時(2)終了日時、あるいは使用時間 (3)会議室がの番号(4)予約した人 日付や会議室別にシートを分けるとか、Excelの Userから予約者の名前を取得する等の方法が 考えられるのですが、その辺の仕様がハッキリ しないとソースを提示できませんね。

sei_s95
質問者

補足

ご回答ありがとうございます、補足します。 入力するのは ・入力者(プルダウンが望ましい) ・日付 ・開始時間 ・終了時間 ・内容 です。 会議室は1つのみで、月毎にシートを分けます。 例えば、 佐藤 6/1 8:00~8:30 打ち合わせ と、入力した場合   8:00 8:30 9:00 ・・・    ---------- 6/1|■■■■■|   |    ---------- 6/2|   |   |    ---------- と、なり、且つ、塗られた部分をクリックしたら 「佐藤、打ち合わせ、8:00~8:30」 と、表示されるような感じです。 

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • excelで会議室予約表の作成(マクロ)

    カテ間違いしてしまいましたので再度投稿します。 よろしくお願いいたします。 上司からの依頼で困っています。 添付のような、マクロボタンを設定し、 ・登録ボタンを押したら該当時間の下の表のセルが塗りつぶされる ・削除ボタンを押したら削除される ・表のセルをクリックしたら、名前、内容などが表示される ように、することは可能でしょうか? マクロは初心者ですが絶対に完成させろといわれてしまいました。。。 そもそも、このような作りこみは可能でしょうか? ちなみに、この表は数人が共有して使う予定です。 以上、お願いいたします。

  • excelで会議室予定表を作成したいです

    よろしくお願いします。 上司からの依頼で、excelで会議室予定表を作成したく知恵を貸してください。 ・会議予定をフォームに入力「名前・会議内容・開始時間・終了時間」 ・フォームに入力した時間がエクセルの表を塗りつぶす ・塗りつぶされたセルをクリックすると、名前、内容が表示される 依頼内容はこのような感じです。 セルに、文字が入力されたら色が変わるよう入力規則をかけたらダメ出しされました。。。 インターネットでダウンロードできる物も探しましたが、条件に合う物は 見つかりませんでした。 予定表は30分刻みで1シートに1か月分、会議室は1つのみです。 助けてください。よろしくお願いします。

  • Excelで出席者表をつくる。

      マクロが得意な方、お願いします。 Excel2013で出席者表(仮称)をつくりたいのです。 添付図のように、E列に(1または2)を入れて、 マクロで(2=欠席者)の列を非表示にする記述を教えてください。 ボタンに登録して、逐次非表示にするボタンと、 一括して再表示にするボタンを作りたいのです。 フィルターを使うとできますが、マクロ学習を始めたので、 教えていただいた記述を研究してマクロをマスターしたいのです。。 よろしくお願いします。

  • Excelで勤務表を作成。

    勤務表を作成しています。 赤いセル「/。」は、希望休です。 勤務表の組み直しを行うため、希望休以外を一括で削除して空白にしたいのですが、そのようなマクロを組む事はできますか? 色で判別するよりも、入力してある文字「/。」で判別して、それ以外に入力してある文字を削除できるようにしたいです。

  • エクセルでのマクロ作成

    エクセルで作成したボタンをクリックすると以下の事を行うマクロを作りたいと思っています。 (1)最初に貼り付けたいセルの範囲をドラッグで選択する。(手動) (2)マクロを登録したボタンを押す。 (3)マクロ内で指定したセル(たとえば $A$1)をコピーして、(2)でボタンを押してマクロを実行する前に(1)で選択したセルの範囲に貼り付ける。 VBAが分からないので難儀しています。 宜しくお願いします。

  • EXCEL VBAで複数シート内のセルをまとめて表を作成

    EXCELマクロ(VBA)を教えてください。 なやんでいることは、 目的:シート1からシート5までの表の値をシート6に一覧表を作成させる。 ・シート1からシート5まで シート内の表からセル値をコピーしてマクロで(ボタンか何かで)シート6にシート1からシート5のセル値を貼り付けていくような動作をさせられるようなプログラムをつくりたいです。    表(一覧)を作成させたいので わかる方プログラミングを教えてください。よろしくお願いします。

  • エクセル マクロ教えて下さい。

    作成してあるマクロボタンを実行した時に下記の処理をしたい。 ●手順 1・表作成ボタン(作成済)をクリックする 2・MsBoxを表示する 3・Yesの時は、セルAIの数式を削除して表を作成する(マクロは作成済) 4・Noの時は、セルAIの数式を削除しないで表を作成する(マクロは作成済) 5・Cancelの時は何もしないで中止する ●手順2~5の記述を御指導お願い致します。 尚、表作成ボタンと表作成マクロは作成済です

  • Excelで、表を作成したいのですが…

    データの整理を、各フォルダに 個人・団体名と、会員番号をつけて登録月日の順で表を作っていました しかし、先日 HDが壊れたため Excelのシートが消えてしまいました データの入ったドライブは無事だったので、  [フォルダ名をコピー]⇒[セルに貼付け] を繰り返せば同じシートが作成できます この作業を簡単なマクロで自動化する方法はないでしょうか 約1000件分なので時間を掛ければ何とかなるとは思いますが、他にも消失したデータがあり困っています どうか、よろしくお願いします//

  • エクセルで在庫表を作成したい

    エクセルで在庫管理表と、出荷伝票を作りたいのですが添付画像のように 在庫管理表シートに出荷依頼のあった商品に出荷数量を入力したら、その商品名やコード、出荷数を別シートの出荷伝票にのセルに自動で入力されるようにしたいのですが、可能ですか? お知恵のある方ご伝授ください。

  • 集計表の作成(自動転記)

    集計表への自動転記の方法を教えてください。 方法は可能であれば関数を用いた方法でお願い致します。 マクロを使用して作成する場合でも構いません。 ※1枚目の画像 完成後の集計表となります。 データ一覧(CSV)より、データを集計し、結果を転記する。 売上(2)については、指定のセルを転記するのではなく、 別にある対象リストに該当するもののみを集計し、転記する。 ※2枚目の画像 データ一覧(CSV)です。 よろしくお願い致します。

専門家に質問してみよう