2017-11-24 3 views
-2
Private Sub CommandButton1_Click() 

If Range("C4").Value <> "" & Range("D4").Value <> "" & Range("E4").Value <> "" & Range("F4").Value <> "" & Range("G4").Value <> "" & Range("H4").Value <> "" & Range("I4").Value <> "" Then 

Set i = Sheets("Sheet2") 

Set e = Sheets("Sheet3") 

Dim d 

Dim j 

j = 3 

Do Until IsEmpty(e.Range("C" & j)) 

If e.Range("C" & j, "F" & j) = i.Range("C4:F4") Then 

If e.Range("G" & j) Is Nothing Then 

e.Range("G" & j, "I" & j) = i.Range("G4:I4") 

Else 

End If 

Else 

i.Range("C4:I4").Copy 

e.Range("C" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues 

End If 

j = j + 1 

Loop 

Else 

End If 

End Sub 
+3

どのようなエラーが表示されますか? –

+1

_ "デバッグヘルプを求める質問("なぜこのコードは動作しないのですか? ")には、目的の動作、特定の問題またはエラー、および問題そのものを再現するために必要な最短コードが含まれている必要があります。他の読者に有用ではない参照してください:[、最小完全、かつ検証例を作成する方法](https://stackoverflow.com/help/mcve) "_ –

+0

私はそれがこの回線であると信じて:e.Rangeの場合( "C"&j、 "F"&j)= i.Range( "C4:F4")Then –

答えて

0

あなたはこのような複数のセルを範囲を比較しているので、あなたのタイプMissmatchは次のとおりです。

If e.Range("C" & j, "F" & j) = i.Range("C4:F4") Then 
VBAは、それはあなたが見ることを期待しないのか分からないので、お答えするのか知りません

、とき4細胞を4細胞と比較する。

意味のある何かを作るために、あなたは範囲を比較する関数を実装する必要があります。

Public Function CompareRanges(rngA As Range, rngB As Range) As Boolean 

    If rngA.Count <> rngB.Count Then 
     CompareRanges = False 
     Exit Sub 
    Else 
     'loop through the cells of rngA and compare them with rngB 
    End If 

End Function 
+0

申し訳ありませんがVBAの新機能は、あなたが書いたコードが何を意味するのかわかりません –

+0

基本的に私は4つのセルに1行の情報があり、次のワークシートの同じ種類のデータのリストを検索して最初の2つのセルが既にリストにあるかどうかを調べるボタンを押して、 2番目の2つのセルを同じ行に追加しますが、4つのセルすべてをリストの最後に貼り付けない場合は、 –

+0

@ O.Renwick、VBA 'if ... then'コマンドについて説明するチュートリアルを見つけてください。また、VBA関数についてのチュートリアルを見つける – jsotola

関連する問題