VBAのワークシート関数で得られたデータをセルに記入することについて

Anonymous
2025-01-27T06:46:35+00:00

次のマクロを実行すると

変数には代入できている。

1個目のセルにはデータが記入されますが

2個目以降は実行されず記入されません。

原因が不明なので教えてください。

' Sample

Public Sub Sakuhyo()

Dim Income, Expenses, Balance As Long

Row = 26

Col = 5

'合計

Income = WorksheetFunction.Sum(Range("E4:E25"))

Expenses = WorksheetFunction.Sum(Range("F4:F25"))

Balance = Income - Expenses

’セルへ記入

Cells(Row, Col).Value = Income ' 記入できている

Cells(Row, Col + 1).Value = Expenses ' 実行されない

Cells(Row + 1, Col).Value = Balance ' 実行されない

End Sub

**モデレーター注**

この質問は Microsoft Edge / ブラウザーを開く / Windows 11 に投稿されましたが、内容から判断してこちらのカテゴリに移動いたしました。

適切なカテゴリに投稿すると、返信や回答が得られやすくなり、同じ質問を持つ他のユーザーの参考にもなります。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。 プライバシーを保護するために、移行された質問のユーザー プロファイルは匿名化されます。

0 件のコメント コメントはありません
{count} 件の投票

3 件の回答

並べ替え方法: 最も役に立つ
  1. simo-k 58,165 評価のポイント ボランティア モデレーター
    2025-01-27T09:07:52+00:00

    2番目、3番目の変数の値は意図されている値になっていますか?

    実行されない事を具体的にどう確認しましたが?

    エラーが発生しているのでしょうか?

    エラーが出ていないのであれば実行しているかと思われます。

    意図した値をセットしてない、或いはせる結合などで反映されないとか?

    VBA(マクロ)の公式サポート場所は、海外コミュニティとなっています。

    有識者が集まっている所の方が、適切なアドバイスを受けやすいでしょう。

    Stack Overflow(VBA)

      [VBA プログラミングに関する質問]

      Stack Overflow には、説明的なタイトル、完全で簡潔な問題ステートメント、問題を再現する
      ための十分な詳細の要求などのガイドラインがあることに注意してください。
      機能要求または過度に広範な質問は、トピック外と見なされます。
      新しいユーザーの場合は、Stack Overflow ヘルプ センター にアクセスして詳細を確認して下さい。

    ※ 閲覧者・回答者が多い公式サポートサイトをお勧めします。

      英語で質問を送信してください。

    0 件のコメント コメントはありません
  2. Anonymous
    2025-01-27T09:08:20+00:00

    この応答は自動的に翻訳されています。 その結果、文法上の誤りや奇妙な言い回しが生じる可能性があります。

    Hi,正樹 勝間

    マイクロソフト コミュニティへようこそ。

    あなたの質問に関して、この問題は、専門家があなたの問題に対処する方法をよりよく理解しているかもしれない特定の専門分野でのサポートを必要とするかもしれません。

    vbaタグとその他の関連タグを使用して、最新の「vba」問題にVBAプログラミングの問題を投稿します - Stack Overflow(英語 のみ)

    最新の「vba」問題 - Stack Overflow (英語 のみ) で VBA プログラミングの問題を、vba タグおよびその他の関連タグを使用して公開します。

    Stack Overflow には、説明的なタイトル、完全で簡潔な問題ステートメント、問題を再現するのに十分な詳細などのガイドラインがあることに注意してください。機能リクエストや過度に広範な質問は、トピックから外れていると見なされます。

    免責事項: マイクロソフトは、黙示的か否かを問わず、いかなる保証も行わず、リンクされた第三者のサイトからお客様が受け取る情報、またはテクノロジに関連するサポートについて責任を負いません。

    私が提供した情報が、あなたがより良い方向性を見つけるのに役立つことを願っています。私たちの素晴らしいボランティアの一人があなたのためにアイデアを思いついた場合に備えて、私はこの情報をファイルに保存します。

    ご理解のほどよろしくお願いいたします。

    Cherry.Z - MSFT |マイクロソフト コミュニティ サポート スペシャリスト

    0 件のコメント コメントはありません
  3. Anonymous
    2025-01-27T09:15:55+00:00

    > 1個目のセルにはデータが記入されますが> 2個目以降は実行されず記入されません。

    ここでの「実行されず記入されない」とはどのような現象を意味するのか、
    どのような方法や手順によってその現象を検証されたのかについて
    具体的に明記されることをお奨めします。

    > Cells(Row, Col).Value = Income ' 記入できている> Cells(Row, Col + 1).Value = Expenses ' 実行されない> Cells(Row + 1, Col).Value = Balance ' 実行されない

    ・上記の 2 つめのステートメントが呼び出されようとした際に
     実行時エラーが発生し、コードが中断される。

    ・あらかじめ E26, F26, および E27 セルの値をクリアしておき、
     上記の 1 つめのステートメントをブレークポイントに設定した状態で
     ステップイン実行を行ない、全てのステートメントが
     (エラーが発生することなく)呼び出されたことを確認したが、
     E26 セルの値のみが変更され、F26 セルおよび E27 セルの値が
     空白のまま変更されていないという結果となっている。

    ・上記以外の状態。

    少なくとも、そのマクロの基本的なフローに関しては
    特に不具合をもたらすような点は見受けられません。

    強いて不具合が発生する可能性のあるケースを挙げるとすれば、

    > Dim Income, Expenses, Balance As Long

    上記の変数については、Income と Expenses が(型指定を省略しているので) Variant 型、
    Balance のみが Long 型として宣言されており、

    > Income = WorksheetFunction.Sum(Range("E4:E25")) > Expenses = WorksheetFunction.Sum(Range("F4:F25")) > Balance = Income - Expenses

    もし Income と Expenses の値の差が Long 型の値の範囲
    ( -2,147,483,648 ~ 2,147,483,647 )を超えていれば、
    その結果を Balance に代入しようとした時点で
    オーバーフローエラーが発生することになります。

    しかし、

    > 変数には代入できている。

    ということであれば、実際の Income と Expenses の値の差は
    Long 型の範囲内に収まっていると考えられます。

    したがって、現時点ではそのマクロ以外の要因を疑うべきではないかと。

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