次の方法で共有

MacOSX用ExcelVBAでWindowsAPIを呼び出してしまったら

Anonymous
2017-05-18T06:09:36+00:00

お世話になります間違えて、MacOSX版Excel2011VBAに

Private Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As MEMORYSTATUS)と、記載しWindowsAPI呼び出しをかけて、しまいました以降、Private Declare Sub Glo…を、削除してもwithを、伴う.Range(.cells(…が、インスタンス系の、エラーになり使えません何とか、救済頂けないで、しょうか宜しくお願い、致します
開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Makapu 92,110 評価のポイント ボランティア モデレーター
2017-05-18T22:34:57+00:00

Noubleさん、こんにちは。

こちらのページのご質問内容の、VBAが上手く動かなくなったという事だったのですね。

(状況が分からない状態で再インストールをお勧めしてしまい、すみませんでした。)

https://okwave.jp/qa/q9330459.html

Declareの行はコメントにし、

Ws As Worksheets → Ws As Worksheet

に直しました所、手元ではExcel2011 for Macでも .Cellsでエラーにはなりませんでした。

(ただ、テストデータが悪いのかループから戻ってこないので強制終了しました。)

VBAに関しましては、開発の方が多くいらっしゃる専用のフォーラムがありますので、今後はそちらを活用されると良いと思いますよ。

Msdnフォーラム - 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

この回答は役に立ちましたか?

1 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

3 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Makapu 92,110 評価のポイント ボランティア モデレーター
    2017-05-18T14:52:11+00:00

    こんばんは。

    機能異常というのが、どの様な状態なのか具体的に分かりませんが、Officeだけの問題であれば、アンインストールしてから再インストールをお試しになってはいかがでしょう。

    Office 2011 for Mac を再インストールする前に完全にアンインストールして、問題のトラブルシューティングを行う

    この回答は役に立ちましたか?

    1 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  2. Anonymous
    2017-05-19T00:02:42+00:00

    有難うございました

    単純な

    騒ぐべきではない

    単純なミスですね

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2017-05-18T19:01:25+00:00

    こんばんは。

    機能異常というのが、どの様な状態なのか具体的に分かりませんが、Officeだけの問題であれば、アンインストールしてから再インストールをお試しになってはいかがでしょう。

    Office 2011 for Mac を再インストールする前に完全にアンインストールして、問題のトラブルシューティングを行う

    ご解答、有難うございます

    しかし、できれば

    アンインストール、無しの

    方向が

    有難い

    の、ですが

    無理で、しょうか?

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません