質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.47%

  • VB.NET

    941questions

    Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

VB? 前回のFor文で使ったiを次のFor文で使いたいとき

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 698

_LAGRANGE_

score 36

For i As Integer = 0 To 100
(終了条件を含むコード)
Next

というFor文があるとき、i = 何回目で終了したのかを取得し、次のFor文を作るときに、

For j As Integer = i+1 To 100

ということがしたいです。(普通に入れると当然動きませんが・・・)

意味がわからないと思いますが、

つまり、一回目のfor文では○個目の要素までチェックをしたので、二回目のfor文では(○個+1)個目の要素からチェックを開始したいという意味です。

うまい書き方が思い浮かばないので、お願いします。


具体的に使用するのは画像のファイルです。
1列目にAが入っているセルの隣の数値をすべて取得し、3列1行にその和を表示させる。
これをAからEにすべて行いたいです。

その過程で1列目にAという文字が入っているかのチェック

その文字が終了するまで3列1行に足し続ける

次の文字(B)へ

という流れで、前回何行目まで参照したのかを知りたいです。

イメージ説明

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

まず、
VBA :VB6系列の旧スタイルBASIC
VB.NET :.Netframework 対応の現行BASIC
似て非なるものです。
'
EXCEL-VBA で、あれば、VBE⇒ツール⇒オプション⇒編集タブ:変数の宣言を強制する にチェック
作成済みコードがある場合は、コードの最上行へ、Option Explicit を書き加えてください。
これにより、未定義変数が使用出来なくなり、変数バグ防止になります。

次に、スコープルールの話です。
変数には、生存期間があります。
その生存期間を定めたルールが、スコープルールです。
>For i As Integer = 0 To 100 
> (終了条件を含むコード) 
>Next
この書式に於いては、i の生存期間は、For ~ Next の範囲に限定されます。
よって、 (終了条件を含むコード) に於いて、
別の変数へ、i の値を保存しておかないと、参照できません。
今回の場合は、事前に i , j を定義して使用する方法が、適しているかもしれません。

VBAでは、For i As Integer = 0 To 100
の様な書式は許されていないので、
正しい書式を調べて
  Office 開発者向けドキュメント
  https://msdn.microsoft.com/ja-jp/office/aa905340.aspx
コードを書きます。

VBA を使う場合は、可能なかぎり、
未定義変数を使わない⇒Variant になるから
Variant は、VB.NET ではサポートされません。
⇒どうしてもの場合は、
 バリアント ジェネリック  
 バリアント オブジェクト
でググって、発想を変えて対応します。
Windows API 系で使われる Any も使用しない。
C#他を意識する場合は、With ~ 等使わない方が良い物もあります。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/07 16:45

    スコープルール、初めて聞きました。
    ほかの変数を宣言して置き換えてみます。
    ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.47%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • VB.NET

    941questions

    Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。