0

Excelのworkbook1にデータを挿入してworkbook2にコピーしたい。新しく挿入されたデータが両方のブックで重複しないことを確認する必要があります。列C(タイプ文字列)の記事番号を使用して、データが両方のワークブックにすでに存在するかどうかを確認します。データがすでに存在する場合、ユーザーは再入力する必要があります。

どの文字列関数を使用して文字列を検索するかわかりません。これが私のコードの一部です(このコードは、workbook1に新しいデータを入力してからworkbook2にコピーするためのものです)。チェックに使用する文字列は列C(textbox1)にあります

Workbooks("workbook1.xlsm").Activate
With Worksheets("sheet1")
    '~insert data
    .Range("B" & (i + CountProd)) = ComboBox1.Text
    .Range("C" & (i + CountProd)) = TextBox1.Text
    .Range("D" & (i + CountProd)) = TextBox2.Text
    .Range("E" & (i + CountProd)) = TextBox3.Text
    .Range("F" & (i + CountProd)) = TextBox4.Text
    .Range("G" & (i + CountProd)) = TextBox5.Text
    .Range("H" & (i + CountProd)) = ComboBox2.Text
    .Range("I" & (i + CountProd)) = TextBox6.Text
    .Range("J" & (i + CountProd)) = TextBox7.Text
    .Range("K" & (i + CountProd)) = TextBox8.Text

End With

Workbooks("workbook2.xlsm").Activate

RowNo = Workbooks(prod & " Input.xlsm").Worksheets("Input").Cells(31, 3).Value
RowNo = RowNo + 32

Set sh1 = Workbooks("workbook2.xlsm").Worksheets("sheet1")
Set sh2 = Workbooks("workbook1.xlsm").Worksheets("sheet1")

sh1.Range(sh1.Cells(RowNo, 2), sh1.Cells(RowNo, 11)).Value = sh2.Range(sh2.Cells((i + CountProd), 2), sh2.Cells((i + CountProd), 11)).Value
'        End If
4

2 に答える 2

0

必要なのは、ある範囲に特定の値が存在するかどうかを示す関数だと思います。これは、[Arg]が範囲[SRng]の列[SCol]のどこかに含まれているかどうかを確認するために使用できる一般的なコードです。

Function Exist(Arg As String, SRng As Range, SCol As Long) As Boolean
Dim Idx As Long

    Idx = 1
    Exist = False

    Do While SRng(Idx, SCol) <> ""
        If SRng(Idx, SCol) = Arg Then
            Exist = True
            Exit Do
        End If
        Idx = Idx + 1
    Loop

End Function

この機能を使用すると、必要な場所に記事番号が存在するかどうかを確認できます...例:

Sub Test()
' properly Dim your variables and objects
Dim Rng1 As Range, Rng2 As Range

    ' set ranges first - you don't need to "activate" sheets unless you
    ' want the display to hop around
    ' avoid hardcoding as much as possible
    Set Rng1 = Workbooks("workbook1.xlsm").Worksheets("sheet1").[A1]
    Set Rng2 = Workbooks("workbook2.xlsm").Worksheets("sheet1").[A1]

    ' then start logic
    If Exist(TextBox1.Text, Rng1, 3) Then
        ' ANr exists somewhere in book1/sheet1/[C..C]
    Else
        ' ANr does not exist in book1/sheet1/[C..C]
    End If

    If Exist(TextBox1.Text, Rng2, 2) Then
        ' ANr exists somewhere in book2/sheet1/[B..B]
    Else
        ' ANr does not exist in book2/sheet1/[B..B]
    End If


End Sub
于 2013-03-04T07:54:08.080 に答える
0

textbox1の文字列が列Cにすでに存在するかどうかを確認するには、「検索」機能を使用できます。

on error resume next
lRow = range("C:C").find(textbox1.text,...).row

if err.number = 0 then    'string found
   msgbox "Duplicate value. Try again."
   exit sub
end if

on error goto 0
于 2013-03-04T16:16:14.730 に答える