[[20200403115208]] 『条件の分岐』(K) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『条件の分岐』(K)

 現在、「データ」シートのB列をキーに「明細1」のD列とキーが一致かつ「データ」の5列目がOKだったら「データ」のVに「明細1」のQを持ってくるというマクロを組みました。

さらにキーが一致かつ「明細1」シートのI列がAAAだったらデータシートの6列目をPICKにしたいのですがうまく動きません。

またキーと一致し、「明細2」のZ列がマイナスだったらプラスにするために-1を掛けるようにしましたが。-2.00→2と小数点以下.00が消えてしまいまいます。
文字列等試してみましたがうまく動きませんでした。消えないようにすることは可能でしょうか。

select caseなどで組んでみようかと思いましたがマクロをよく理解しておらず、尚更うまく動きませんでしたのでIFを重ねることにしました。

より良い方法もありましたら教えて頂きたいです。

よろしくお願いします。

   Set wS1 = Worksheets("明細1")
    Set wS2 = Worksheets("明細2")
    With Worksheets("データ")

    For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row 
    Set c = wS1.Range("D:D").Find(What:=.Cells(i, "B"), LookIn:=xlValues, LookAt:=xlWhole)
    Set e = wS2.Range("B:B").Find(What:=.Cells(i, "B"), LookIn:=xlValues, LookAt:=xlWhole)
    Set f = wS1.Range("I:I").Find(What:=wS1.Cells(i, "AAA"), LookIn:=xlValues, LookAt:=xlWhole)

If Not c Is Nothing Then

    If Cells(i, 5)  = "OK" Then
    .Cells(i, "V") = wS1.Cells(c.Row, "Q") 

If Not f Is Nothing Then

            Cells(i, 6) = "PICK"

If wS2.Cells(e.Row, "Z").Value < 0 Then

    .Cells(i, "S") = wS2.Cells(e.Row, "Z") * -1

End If
End If
End If

    Next i

  End With

< 使用 Excel:Excel2016、使用 OS:Windows10 >


こんにちは。

まず、コードのインデントをしっかりつけてください。
投稿用ということでなく、これと同じ形のコードを実行しているのですか?
デバッグもしにくいはずです。
まるでご自分にハンディキャップを与えているようなものです。
コードの構造がわかるように、しっかりインデントをつけるべきです。
End If がひとつ足りません。

これは投稿用のもの(インプットミス)で、本当は違います、というなら、
そうした考えは改めて、コードをVBEから直接コピーペイストしてください。
あなたのインプットミスを他人にチェックさせるのは慎んでください。

また、変数の宣言もなされていないようですが、
これらは、単に、投稿用なので省略しました、ということでしょうか。
想定しない動作になってしまうという質問なら、
変数宣言を省略すべきではありません。それが原因であることもありえます。

これらを念頭にもう一度、ご自分でデバッグされることをお薦めします。
シートの指定がもれているところもあります。
>キーが一致かつ「明細1」シートのI列がAAAだったら
もコードと説明が一致しているのかにわかに分かりません。AAA列と書くべき?

また、小数点以下の表示に関しては、その列の書式を予め指定しておけばよいだけでしょう。

(γ) 2020/04/03(金) 13:13


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.