0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

フリーアドレスのどこにすわっているか、目印をつけ、目印を削除するマクロ

Posted at

フロアのどこに座っているかわからないので、Excelで座席位置を確認できるようにする。

要件整理

背景画像として座席表がある(シート上に画像を貼り付けてある)

ユーザーが朝、自分の席に図形(オブジェクト)を配置する
 → 任意の図形(例えば「●」などの円)を使う

日が終わったら、その図形を一括削除するボタンが欲しい

解決策概要

座席位置を示す図形の名前に特定の接頭辞(たとえば "座席_")をつける
マクロではその接頭辞がついた図形だけをまとめて削除する
ボタンはマクロ実行用に配置

手順とコード

  1. 図形を配置する際のルール

  2. 図形を挿入したら、**名前を「座席_ユーザー名」**などに変更する。
    (図形を選択 → 名前ボックスでリネーム)

  3. マクロコード(VBA)
    Excelの Alt + F11 でVBAエディタを開く
    挿入 → 標準モジュール
    以下を貼り付け:

Sub ResetSeatMarkers()
    Dim shp As Shape
    Dim deletedCount As Integer
    deletedCount = 0

    For Each shp In ActiveSheet.Shapes
        If Left(shp.Name, 3) = "座席_" Then
            shp.Delete
            deletedCount = deletedCount + 1
        End If
    Next shp

    MsgBox deletedCount & " 件の座席マーカーを削除しました。", vbInformation
End Sub

ボタンの設置方法

Excelシートに戻る
「開発」タブ → 「挿入」→ 「フォームコントロールのボタン」
任意の場所にドラッグ
表示されるダイアログで ResetSeatMarkers を選択


マクロの仕様

  1. Excelの座席表シートに、座席マーカー(丸い図形)を自動で追加します。
  2. 座る席の位置(セル)を選択し、その位置に円形の図形(●)を配置。
  3. 図形には自動で**名前「座席_ユーザー名」**をつける。
  4. 図形の色は自由に変更可能(標準で青に設定)。

ユーザー名はマクロ実行時に入力ボックスから入力します。

Sub AddSeatMarker()
    Dim userName As String
    Dim marker As Shape
    Dim targetCell As Range
    Dim leftPos As Double, topPos As Double
    Dim width As Double, height As Double

    ' ユーザー名を入力
    userName = InputBox("あなたの名前を入力してください(例:Yamada)", "ユーザー名入力")
    If userName = "" Then Exit Sub

    ' セルが選択されているかチェック
    If TypeName(Selection) <> "Range" Then
        MsgBox "まず、座っている席に該当するセルを選択してください。", vbExclamation
        Exit Sub
    End If

    Set targetCell = Selection.Cells(1)

    ' 図形の大きさと位置(セルの中央に配置)
    leftPos = targetCell.Left + (targetCell.Width / 4)
    topPos = targetCell.Top + (targetCell.Height / 4)
    width = targetCell.Width / 2
    height = targetCell.Height / 2

    ' 円形の図形を作成
    Set marker = ActiveSheet.Shapes.AddShape(msoShapeOval, leftPos, topPos, width, height)

    ' 図形の書式
    With marker
        .Name = "座席_" & userName
        .Fill.ForeColor.RGB = RGB(0, 112, 192) ' 青色
        .Line.Visible = msoFalse
        .LockAspectRatio = msoTrue
    End With
End Sub

使い方手順(ユーザー向け)

  1. 自分が座っている席のセルを選択
  2. ボタンから「AddSeatMarker」マクロを実行
  3. 名前を入力すると、そのセルにマーカーが付きます
  4. 終業時は、前述の「ResetSeatMarkers」マクロで一括削除

座席表は画像で張り付けるので、セルを選択できない。
その場合は、Ctrl + 6 によって、シート上のすべてのオブジェクトを非表示にする。
セルを選択する。
再度 Ctrl +6 をクリックすることによって再表示する。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?