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

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

ただいまの
回答率

90.48%

  • VBA

    1863questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

  • Excel

    1596questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

特定の範囲内から文字列を読み取る方法

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,833

sehiro

score 7

複数のフォルダ内にあるエクセルファイルの中身を参照して、特定範囲内にある情報を抽出したいです。
具体的に参照したいエクセルファイルの該当箇所は、Range("B4:D4")、Range("E7:G7")範囲内でその範囲に文字列があった場合、その文字列を読み取るようにしてほしいです。

まず、エクセルファイルのRange("B4:D4")にある値を、
自分のファイルに出力させたいです。

以下の3点についてアドバイス頂けると助かります。
①処理の流れがあっているか
②Sub Bookinfo(loop1 As Integer)の引数の設定の仕方は大丈夫か
③datename に値が入力されない

Sub Bookinfo(loop1 As Integer) 

Dim datename As String   '作成日
Dim loop1 As Integer      '繰り返し    

For loop1 = 2 To 4             'B4からD4の値を検索       
    if Cells(loop1,4) <> ""   '値があれば
    datename = Cells(loop1, 4)  '変数に値を入力 
    Exit For
    End If
Next
    Cells(1, 1) = subjectname   '値を出力
End Sub

宜しくお願いします。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2016/04/11 00:45

    こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

  • kei344

    2016/04/11 01:26

    「3の条件分岐」とありますが、質問からは抜けているようです。また、「文字列を読み取る」は、読み取ったものをどこに保存とかどうやって使うなど補足説明が必要です。質問文を編集してください。

    キャンセル

回答 2

+1

該当するセルが決まっているなら、

  • CHOOSE関数を使う
  • Forループを回す
  • なんらかの判断をする

  • 評価するセル範囲を配列に入れる
  • Forループを回す
  • なんらかの判断をする

でよいのでは?

前者は評価するセルの個数が29個までになります(CHOOSE関数の仕様)

'評価するセル範囲を配列に入れる
    Dim EvaluateRange(1 To 6) As String
    EvaluateRange(1) = "B4"
    EvaluateRange(2) = "C4"
    EvaluateRange(3) = "D4"
    EvaluateRange(4) = "E7"
    EvaluateRange(5) = "F7"
    EvaluateRange(6) = "G7"

    'Forループを回してなんらかの判断をする(今回はMsgBoxで値を表示してみた)
    Dim i As Integer    
    For i = LBound(EvaluateRange) To UBound(EvaluateRange)
        MsgBox (Evaluate(EvaluateRange(i)))
    Next i

もっと効率的なやり方もあると思いますが、最初は泥臭いやり方でやってみるのが良いでしょう

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/04/11 04:24

    今回はForループで書きましたが、配列に対して処理をするならForループよりFor Eachループの方が良いです

    キャンセル

  • 2016/04/12 00:07

    コメントありがとうございます。頂いた内容を元に、質問内容を再整理しました。何かアドバイス頂けると嬉しいです。宜しくお願いします。




    キャンセル

checkベストアンサー

0

①処理の流れがあっているか

意図する動作になっていれば、結果としてあっているのでは?
意図する動作になっていないのであればどこかおかしいですね

②Sub Bookinfo(loop1 As Integer)の引数の設定の仕方は大丈夫か 

引数として指定されているloop1がBookinfoの中でも宣言されていますが、何か意図している事がありますか?
変数のスコープについてすこし学ばれた方が..

③datename に値が入力されない

そもそもどのセルを指しているか確認してますか?
CellsはCells(行, 列)です
コードを見る限りループで回している

  • Cells(loop1, 4)

  • Range("B4:D4")

は等価では無いと思われますが..

動作がおかしいと思った時は、まずステップ実行してみて

datename = Cells(loop1, 4)  '変数に値を入力  


に処理が来ているか、Cells(loop1, 4)の値がどうなっているか確認する癖を付けるようにした方がいいです

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/04/12 20:15

    コメントありがとうございます。本日、マクロ作成できました。またの機会ありましたら、宜しくお願いします。

    キャンセル

関連した質問

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

  • VBA

    1863questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

  • Excel

    1596questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。