Microsoft 製品に組み込まれている Visual Basic の実装。
Noubleさん、こんにちは。
こちらのページのご質問内容の、VBAが上手く動かなくなったという事だったのですね。
(状況が分からない状態で再インストールをお勧めしてしまい、すみませんでした。)
https://okwave.jp/qa/q9330459.html
Declareの行はコメントにし、
Ws As Worksheets → Ws As Worksheet
に直しました所、手元ではExcel2011 for Macでも .Cellsでエラーにはなりませんでした。
(ただ、テストデータが悪いのかループから戻ってこないので強制終了しました。)
VBAに関しましては、開発の方が多くいらっしゃる専用のフォーラムがありますので、今後はそちらを活用されると良いと思いますよ。
※ご利用になる場合は、すぐに他の方がテスト可能なコードを記入すると情報が集まり易いと思います。
Option Explicit
Option Base 0
’Private Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As MEMORYSTATUS)
Type 変数取得順速度差を減らす
s1 As Long
s2 As Long
Ch As Long
du As Long
St As String
Rg As Range
End Type
Const n As Long = 2000
Sub ダミーデータ作成1()
Dim lp As 変数取得順速度差を減らす, Data(1 To n, 1 To n) As Long, k As Long, Ws As Worksheet
Set Ws = Worksheets.Add()
Worksheets("Sheet1").Select
With Ws ' ↓此処で、エラー
With .Range(.Cells(1, 1), .Cells(n, n))
Let lp.St = "Min(" & Ws.Name & "!" & .Address & ")"
End With
For k = 0 To Int(n / 100) - 1
For lp.s2 = 1 To 100
For lp.s1 = 1 To n
With .Cells(k * 100 + lp.s2, lp.s1)
.Formula = "=RANDBETWEEN(1," & n & ")"
.Calculate
.Value = .Value
Data(k * 100 + lp.s2, lp.s1) = .Value
End With
Next lp.s1
Next lp.s2
Worksheets("Sheet1").Range("c1").Value = k
Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True
Next k
Set lp.Rg = .Range(.Cells(1, 1), .Cells(n, n))
End With
End Sub