• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelのマクロで○○マス計算)

Excelのマクロで○○マス計算

このQ&Aのポイント
  • Excelのマクロ(その1)を使ってマス計算を行う方法について質問があります。
  • 任意のセルに1桁の数値を入れたら6×6や7×7のシートが作れるマクロについて、コンパイルエラーの解決方法を教えてください。
  • 質問者は自分で試してみましたが、変数が定義されていないというエラーが出てしまいます。どの部分を修正すれば正常に動くようになるでしょうか。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

昨日の質問が締め切られていなければ書き込もうと思っていたのですが、A1セルにマス目の数を入力して実行してみてください。なにも入力していなければ10×10にします。(InputBoxで入力する方法もありますが、毎回問い合わせがでるのは煩雑なのでA1に入れる方式にしました) Option Explicit Sub macro1() Dim idxC, idxR, wkNum As Integer Dim wkList, wkChar As String, wkLen Randomize wkLen = Cells(1.1).Value If IsNumeric(wkLen) And wkLen > 0 And wkLen < 11 Then Else wkLen = 10 End If Range("A1:K11").ClearContents wkList = Left("0123456789", wkLen) For idxC = 2 To wkLen + 1 wkNum = Int(Rnd() * Len(wkList)) + 1 wkChar = Mid(wkList, wkNum, 1) Cells(1, idxC) = Val(wkChar) wkList = Replace(wkList, wkChar, "") Next idxC wkList = Left("0123456789", wkLen) For idxR = 2 To wkLen + 1 wkNum = Int(Rnd() * Len(wkList)) + 1 wkChar = Mid(wkList, wkNum, 1) Cells(idxR, 1) = Val(wkChar) wkList = Replace(wkList, wkChar, "") Next idxR End Sub なお掲載されたマクロは"0123456789"の文字列の長さを変更することにより、マス目の大きさをコントロールしようとされているようですが、10文字より短くなったとき、FOR文で10回ループさせるとMID文でエラーになるように思います。FOR文を終了させる数字を12固定ではなく、LEN(WkList)+2にすればよいかもしれません。

mobuta
質問者

お礼

早速のお返事ありがとうございます。おかげさまで,作りたいものが完成しそうです。これを機会に,マクロの勉強をしてみたいと思いました。前回に引き続きありがとうございました。

関連するQ&A