このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

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

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

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

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

VBAが難しいと感じたら
ココナラにてマクロ(VBA)の作成代行を始めました。
ご依頼はこちらから

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

事前準備

事前準備として次の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が難しいと感じたら
ココナラにてマクロ(VBA)の作成代行を始めました。
ご依頼はこちらから