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

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

2024年9月16日

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

我が家では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上級者を目指したい人にはパーフェクトExcel VBA一択です。
この本を読み切れば間違いなくVBA上級者になれます。

created by Rinker
技術評論社
¥3,608 (2024/12/03 20:42:15時点 Amazon調べ-詳細)
VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから