ごはんのメニューをランダムに決めるマクロを紹介

ごはんのメニュー決めるの面倒くさい
今回は、こんなお悩みを持つ人に向けた内容です。

我が家では1週間分のメニューをまとめて決めているのですが、決めるのが面倒くさくて仕方がありません。
この問題を解決するため、ごはんのメニューを自動的に決めるマクロを作成しました。
メニューリストの中から、ランダムで1週間分のメニューを選び出してくれます。

同じお悩みを持つ方は使用してみてください。

メニュー決めマクロの使い方

事前準備

事前準備として次の2つの名前のシートを作成します。

  1. Sheet1
  2. MenuList

そして、MenuListのシートには上の画像のようにA列にメニューの候補一覧を入力しておきます。

この候補の中からランダムで1週間分のメニューを選び出します。

マクロのコード

メニューを決めるマクロのコードは次のようになります。

Sub ChooseMenu()

  Dim shtMain As Worksheet: Set shtMain = ThisWorkbook.Sheets("sheet1")
  Dim shtMenuData As Worksheet: Set shtMenuData = ThisWorkbook.Sheets("MenuList")

  'メニュー数取得
  Dim lngMenuNum As Long
  lngMenuNum = shtMenuData.Cells(Rows.Count, 1).End(xlUp).Row

  '乱数生成(かぶりNG)
  Dim strMenu(0 To 6, 0) As String '一括貼付けのため2次元配列
  Dim blUsed() As Boolean: ReDim blUsed(lngMenuNum)
  Dim tmpNum As Long
  Dim intI As Integer

  For intI = 0 To 6
    Do
      tmpNum = Int(Rnd * lngMenuNum) + 1
      If blUsed(tmpNum) = False Then
        blUsed(tmpNum) = True 'メニューのかぶり防止
        strMenu(intI, 0) = shtMenuData.Cells(tmpNum, 1).Value
        Exit Do
      End If
    Loop
  Next

  'メニューの表示
  shtMain.Cells(1, 1).Resize(7, 1).Value = strMenu

End Sub

このマクロを実行すると、Sheet1に1週間分のメニューがランダムに選び出されます。

f:id:hamahiro881477:20201126072145p:plain

他の「VBA」の記事はこちらからどうぞ