Excel VBA質問箱 IV

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

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


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

【63497】VBAの繰り返し処理について はるのこ 09/11/12(木) 18:02 質問[未読]
【63499】Re:VBAの繰り返し処理について neptune 09/11/12(木) 21:53 回答[未読]

【63497】VBAの繰り返し処理について
質問  はるのこ  - 09/11/12(木) 18:02 -

引用なし
パスワード
   VBAを始めたばかりなので、コードがとても見苦しいと思いますが
よろしくお願いします;;

workbook1(以下wb1)のB3に入力した県名を含む行を、
workbook2から取り出し、wb1のB7以降に表示させたいと思っています
(ちなみに県名はwb2のC列に入っています)
同じ県名が含まれる行が多いので、それらを繰り返し処理で
全て書き出したいと思い、以下のマクロを作りました。

Sub macro3()
Dim c
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim k As Integer
Dim firstAddress As String

Application.ScreenUpdating = False

Set wb1 = ActiveWorkbook
Set wb2 = Workbooks.Open("G:\zyouhousyori\inn100best_full.csv")
Set c = cell.Find(What:=Range("B3").Value)
With wb2.Worksheets(1).Range("A1:A100")
If Not c Is Nothing Then
firstAddress = c.Address
Do
Set c = cell.FindNext(c)
For k = 0 To 10
.Range("C100").End(xlUp).Offset(1).Copy _
wb1.Worksheets("sheet1").Cells(7 + k, 2)
Exit For
★Loop While Not c Is Nothing And _
c.Address <> firstAddress

End If

End With

Application.ScreenUpdating = True
wb2.Close False
End Sub

しかし、実行すると★マークのついた所でエラーになってしまいます
(対応するDoがありません、と出ます)
VBA初心者なので、どこがどう違うのかいまいちわかりません;
アドバイスお願いします。

【63499】Re:VBAの繰り返し処理について
回答  neptune  - 09/11/12(木) 21:53 -

引用なし
パスワード
   ▼はるのこ さん:
>VBAを始めたばかりなので、コードがとても見苦しいと思いますが
>よろしくお願いします;;

1.Err.Number とErr.Descriptionは必ず書いて下さい。
2.キチンとインデントを入れましょう。見にくいです。

すると、なにかがぬけているのが良く判ります。
※訂正はしてないです。インデントを付けただけです。
又、すぐ気が付いたので詳細については見てません。
Sub macro3()
Dim c
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim k As Integer
Dim firstAddress As String

  Application.ScreenUpdating = False
  
  Set wb1 = ActiveWorkbook
  Set wb2 = Workbooks.Open("G:\zyouhousyori\inn100best_full.csv")
  Set c = cell.Find(What:=Range("B3").Value)
  With wb2.Worksheets(1).Range("A1:A100")
    If Not c Is Nothing Then
      firstAddress = c.Address
      Do
        Set c = cell.FindNext(c)
        For k = 0 To 10
          .Range("C100").End(xlUp).Offset(1).Copy _
          wb1.Worksheets("sheet1").Cells(7 + k, 2)
          Exit For

      Loop While Not c Is Nothing And _
        c.Address <> firstAddress
    End If
  End With
  
  Application.ScreenUpdating = True
  wb2.Close False
End Sub

>VBA初心者なので、どこがどう違うのかいまいちわかりません;
VBA初心者なので・・・と言うせりふを使うのは百害あって一利なし
です。

例えばこういう風に思う人もいます。少なくは無いと思いますよ。
ht tp://wids.net/lib/forlusers.html

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