過去ログ

                                Page     676
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼Do Until Loopと Ifの組あわせ方おしえて...  kenken 03/1/30(木) 2:33
   ┗Re:Do Until Loopと Ifの組あわせ方おしえ...  ポンタ 03/1/30(木) 2:53
      ┗Re:Do Until Loopと Ifの組あわせ方おしえ...  kenken 03/1/31(金) 2:03
         ┗Re:Do Until Loopと Ifの組あわせ方おしえ...  ポンタ 03/1/31(金) 9:55
            ┗Re:Do Until Loopと Ifの組あわせ方おしえ...  kenken 03/2/3(月) 3:21
               ┗Re:Do Until Loopと Ifの組あわせ方おしえ...  ポンタ 03/2/3(月) 11:18
                  ┗Re:Do Until Loopと Ifの組あわせ方おしえ...  kenken 03/2/4(火) 23:54

 ───────────────────────────────────────
 ■題名 : Do Until Loopと Ifの組あわせ方おしえて...
 ■名前 : kenken
 ■日付 : 03/1/30(木) 2:33
 -------------------------------------------------------------------------
    お世話になってます。
 もし、おわかりになるかたがいらっしゃればぜひ教えてください!


※下記で   
    Else
      ActiveCell.Offset(1).Select
    End If
   のところで実行エラー1004がでてしまいます!
   何が問題なのでしょうか?
   いろいろ構文を変えてためしたのですが、
   うまくいきません! 
  

※FDを開く
  Workbooks.OpenText Filename:="A:\FD.TXT", DataType:= _
    xlDelimited, TextQualifier:=xlDoubleQuote,                ConsecutiveDelimiter:=False, _
    Tab:=True, Semicolon:=False, Comma:=True, Space:=False,          Other:=False _
    , FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array     (4, 1), Array(5, 1))


※'FDからシートにコピー
  Worksheets("FD").Move Before:=Workbooks(MyBook).Sheets(1)
  Worksheets("FD").Range("E1:E201").Copy
  Worksheets("FD").Range("A2").PasteSpecial Paste:=xlValues
  Worksheets("FD").Range("B1:C201").Copy
  Worksheets("変換fd").Range("C2").PasteSpecial Paste:=xlValues
 

  Worksheets("変換fd").Select
   Range("C1").Select

   Do Until ActiveCell.Value = " "
     If ActiveCell.Offset(, -1).Value = " " Then
      
         With ActiveCell
         .Offset(, 2).Formula = _
  "=IF(VLOOKUP($C:$C,商品コード!$A:$C,2,FALSE)=""変換"",0,VLOOKUP($C:$C,商品コード!$A:$C,3,FALSE)/$D:$D)"
        .Offset(1).Select '
      
         End With
      
    Else
      ActiveCell.Offset(1).Select
    End If
  Loop
  

End Sub
 ───────────────────────────────────────  ■題名 : Re:Do Until Loopと Ifの組あわせ方おしえ...  ■名前 : ポンタ  ■日付 : 03/1/30(木) 2:53  -------------------------------------------------------------------------
   65536行まで行っちゃったじゃないですか?

Do Until ActiveCell.Value = " "

Do Until ActiveCell.Value = " " Or ActiveCell.Row > Range("C65536").End(xlUp).Row
に変えるとどうなりますか?
 ───────────────────────────────────────  ■題名 : Re:Do Until Loopと Ifの組あわせ方おしえ...  ■名前 : kenken <hizaki@sage.ocn.ne.jp>  ■日付 : 03/1/31(金) 2:03  -------------------------------------------------------------------------
   ▼ポンタ さん:有難うございます!
        実行エラーではなくなったのですが…
        でも、値がでなくなってしまいました!

 
>65536行まで行っちゃったじゃないですか?
>
>Do Until ActiveCell.Value = " "
>を
>Do Until ActiveCell.Value = " " Or ActiveCell.Row > Range("C65536").End(xlUp).Row
>に変えるとどうなりますか?
 実行エラーはなくなったのですが…
 E列の値がでないのに終了してしまいます。
 IF〜が実行されないのです!

 超初心者で申し訳ありません!
 参考書どおり忠実に、組んだはずなんですが…

 ご迷惑をおかけいたしますが、アドバイスお願いいたします。 
 ───────────────────────────────────────  ■題名 : Re:Do Until Loopと Ifの組あわせ方おしえ...  ■名前 : ポンタ  ■日付 : 03/1/31(金) 9:55  -------------------------------------------------------------------------
   Worksheets("変換fd").Select
  :
  :
Loop

までを、以下のようにFor〜Nextに書き換えるとどうなります?

With Worksheets("変換fd")
  .Select
  For i = 1 To .Range("C65536").End(xlUp).Row
    If .Cells(i, 3).Value <> " " And .Cells(i, 2).Value = " " Then
      Cells(i, 5).Formula = _
        "=IF(VLOOKUP($C:$C,商品コード!$A:$C,2,FALSE)=""変換"",0,VLOOKUP($C:$C,商品コード!$A:$C,3,FALSE)/$D:$D)"
    End If
  Next
End With

あと、条件が
ActiveCell.Value = " "
のように半角スペース1つになってますが、
これでよいのですか?

空白、半角スペース2つ以上、全角スペース、これらは表示上は
" "と同じですが、別の値として処理されます。

ご確認ください。
 ───────────────────────────────────────  ■題名 : Re:Do Until Loopと Ifの組あわせ方おしえ...  ■名前 : kenken  ■日付 : 03/2/3(月) 3:21  -------------------------------------------------------------------------
   ▼ポンタ さん:ありがとうございます。結局原因はスペースのようでした!
>ActiveCell.Value = " "
>のように半角スペース1つになってますが、
>これでよいのですか?
>
空白にしたつもりだったんですが…
これで、関数まではうまくいったんですが…
なぜか、関数の複写が一行おきになってしまいました??
なぜか、わかりますが
 Do Until ActiveCell.Value = ""
   With ActiveCell
   .Offset(, 2).Formula = _
  "=IF(TYPE(VLOOKUP($C:$C,商品コード!$A:$C,3,FALSE))=16,$D:$D,$D:$D/VLOOKUP($C:$C,商品コード!$A:$C,3,FALSE))"
    .Offset(1).Select
   End With
              
    ActiveCell.Offset(1). Select
Loop


また、教えていただいた、Forを以下の様に実行したら、
実行エラー1004になってしまいました。

    
   With Worksheets("変換fd")
   .Select
   Dim i As Integer
   For i = i To Range("C65536").End(xlUp).Row
    If Cells(i, 3).Value <> "" Then
      Cells(i, 5).Formula = _
"=IF(TYPE(VLOOKUP($C:$C,商品コード!$A:$C,3,FALSE))=16,$D:$D,$D:$D/VLOOKUP($C:$C,商品コード!$A:$C,3,FALSE))"
    End If
  Next
End With

 ご迷惑をおかけしまして、申し訳ありませんが、
 またアドバイスよろしくお願いいたします。
 本日、会社に保存してあるファイルで再度実験してみます…
 ───────────────────────────────────────  ■題名 : Re:Do Until Loopと Ifの組あわせ方おしえ...  ■名前 : ポンタ  ■日付 : 03/2/3(月) 11:18  -------------------------------------------------------------------------
   >なぜか、関数の複写が一行おきになってしまいました??

 Do Until ActiveCell.Value = ""
   With ActiveCell
   .Offset(, 2).Formula = _
  "=IF(TYPE(VLOOKUP($C:$C,商品コード!$A:$C,3,FALSE))=16,$D:$D,$D:$D/VLOOKUP($C:$C,商品コード!$A:$C,3,FALSE))"
    .Offset(1).Select
     ↑ここで1行下をアクティブにしている
   End With
              
    ActiveCell.Offset(1). Select
     ↑ここで、もう1行下をアクティブにしている
Loop

↑のような理由によるものではないでしょうか?

>また、教えていただいた、Forを以下の様に実行したら、
>実行エラー1004になってしまいました。
Dim i As Integer

Dim i As Long
にするとどうですか?

#Do〜Loopがうまくいったらこちらの問題は解決しなくても良いかもしれませんが・・・。
 ───────────────────────────────────────  ■題名 : Re:Do Until Loopと Ifの組あわせ方おしえ...  ■名前 : kenken  ■日付 : 03/2/4(火) 23:54  -------------------------------------------------------------------------
   ▼ポンタ さん:本当にありがとうございました!
       初めてマクロらしきものが完成して感激してます!
       また、なにかありましたら、アドバイスよろしくおねがいします!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 676