Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2843 / 13646 ツリー ←次へ | 前へ→

【65636】条件に合うまで行の文字を連結する kuro 10/6/17(木) 16:27 質問[未読]
【65638】Re:条件に合うまで行の文字を連結する 超初心者 10/6/17(木) 17:48 発言[未読]
【65639】Re:条件に合うまで行の文字を連結する kuro 10/6/17(木) 18:07 お礼[未読]
【65648】Re:条件に合うまで行の文字を連結する 超初心者 10/6/18(金) 11:57 発言[未読]
【65651】Re:条件に合うまで行の文字を連結する kuro 10/6/18(金) 16:00 お礼[未読]

【65636】条件に合うまで行の文字を連結する
質問  kuro  - 10/6/17(木) 16:27 -

引用なし
パスワード
   Excel2007を使用してるVBAの初心者です。

ExcelシートのA列に以下のような入力がされています。
一番上の”Contact Information”という文字は、A列の何行目に出てくるかはわかりません。
もし”Contact Information”という文字が出てきたら、その次の行〜”Telephone:”という文字の上の行まで、セルの中の文字を連結したいのです。

(A列)
Contact Information
Department of Virology
University of Tokushima Graduate School of Medicine
Kuramoto-cho
Tokushima, 770-8503, Japan
Telephone:
Fax Number:
E-mail:
URL:

結果としては
Department of Virology University of Tokushima Graduate School of Medicine Kuramoto-cho Tokushima, 770-8503, Japan

としたいのです。要は、住所が何段かに別れて入力されているので
1行につなげて作りたいというわけです。
4行に分かれているか、5行に分かれているかもばらばらです。
なので”Telephone:”の上までというような指示にしたいと思っています。

連結させるときに、行と行の間にはスペースをつけて連結したいのですが
どのようにしたらできますか?

教えてください。
お願いいたします。

【65638】Re:条件に合うまで行の文字を連結する
発言  超初心者  - 10/6/17(木) 17:48 -

引用なし
パスワード
   ▼kuro さん:

強引にゴリゴリ回してみました^^;;

Sub sample()
  Dim myRow As Long
  Dim myStBool As Boolean
  Dim mySTR As String
  
  For myRow = 1 To Range("A" & Cells.Rows.Count).End(xlUp).Row
    If Range("A" & myRow).Value = "Telephone:" Then
      myStBool = False
    End If
    If myStBool Then
      mySTR = mySTR & " " & Range("A" & myRow)
    Else
      If mySTR <> "" Then
        Range("D" & myRow).Value = Mid$(mySTR, 2)
        '↑書き出し先は適当に
        mySTR = ""
      End If
    End If
    If Range("A" & myRow).Value = "Contact Information" Then
      myStBool = True
    End If
  Next myRow
End Sub

テストしてないので、出来なかったらゴメンなさい。

一応、参考までに。。。

【65639】Re:条件に合うまで行の文字を連結する
お礼  kuro  - 10/6/17(木) 18:07 -

引用なし
パスワード
   ありがとうございました。

実行してみたらできていました。
今はD列の"Telephone:" の行のところに結果がでました。
'↑書き出し先は適当に
とコメントいただいたところだと思います。

もしお時間のある時でかまいませんので
簡単なコードの解説をいただけたら
助かります。

コピー張り付けだけでは、腕が上がらないので
理解して飲み込めるようになりたいと思いまして。。。


▼超初心者 さん:
>▼kuro さん:
>
>強引にゴリゴリ回してみました^^;;
>
>Sub sample()
>  Dim myRow As Long
>  Dim myStBool As Boolean
>  Dim mySTR As String
>  
>  For myRow = 1 To Range("A" & Cells.Rows.Count).End(xlUp).Row
>    If Range("A" & myRow).Value = "Telephone:" Then
>      myStBool = False
>    End If
>    If myStBool Then
>      mySTR = mySTR & " " & Range("A" & myRow)
>    Else
>      If mySTR <> "" Then
>        Range("D" & myRow).Value = Mid$(mySTR, 2)
>        '↑書き出し先は適当に
>        mySTR = ""
>      End If
>    End If
>    If Range("A" & myRow).Value = "Contact Information" Then
>      myStBool = True
>    End If
>  Next myRow
>End Sub
>
>テストしてないので、出来なかったらゴメンなさい。
>
>一応、参考までに。。。

【65648】Re:条件に合うまで行の文字を連結する
発言  超初心者  - 10/6/18(金) 11:57 -

引用なし
パスワード
   ▼kuro さん:

A列を順に捜査して、
"Contact Information"が出てきたら、蓄積開始フラグON
"Telephone:"が出てきたら蓄積開始フラグOFF

フラグがOFFの場合、
セルへの書き出しと蓄積結果のクリア

と、条件をゴリゴリまわしているだけです^^;;

蓄積は変数mySTRに。
開始終了の合図?は変数myStBoolに。
変数myRowは行番号。

これらを元に、

フラグ(myStBool)の切り替えの
タイミングが少し分かり難いかもしれませんが、

ローカルウィンドウなどで変数の内容を確認しながら
シングルステップで実行していき、
見ていくと理解できるかと思います。

あとは、分からない命令等をヘルプファイルで
見ていくと良いでしょう。


分かり難い説明(?)で申し訳ありませんが
こんなところで・・・^^;;

【65651】Re:条件に合うまで行の文字を連結する
お礼  kuro  - 10/6/18(金) 16:00 -

引用なし
パスワード
   ▼超初心者 さん:

ご説明ありがとうございました。
解読しながら頑張ります。


>▼kuro さん:
>
>A列を順に捜査して、
>"Contact Information"が出てきたら、蓄積開始フラグON
>"Telephone:"が出てきたら蓄積開始フラグOFF
>
>フラグがOFFの場合、
>セルへの書き出しと蓄積結果のクリア
>
>と、条件をゴリゴリまわしているだけです^^;;
>
>蓄積は変数mySTRに。
>開始終了の合図?は変数myStBoolに。
>変数myRowは行番号。
>
>これらを元に、
>
>フラグ(myStBool)の切り替えの
>タイミングが少し分かり難いかもしれませんが、
>
>ローカルウィンドウなどで変数の内容を確認しながら
>シングルステップで実行していき、
>見ていくと理解できるかと思います。
>
>あとは、分からない命令等をヘルプファイルで
>見ていくと良いでしょう。
>
>
>分かり難い説明(?)で申し訳ありませんが
>こんなところで・・・^^;;

2843 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free