私はこのサイトや他のサイトを使ってこのプロジェクトを立ち上げましたが、壁にぶち当たりました。私がやっていることは、特定のワークブック (ImportConvert.xlsx) から列 c - h をインポート (コピー) し、それらを ControlBook.xlsm の列 a - f に貼り付けることです。次に、3 番目のワークブック (Clients.xlsx) の行 a ~ c をコピーし、それらの列を ControlBook.xlsm の列 m ~ o に貼り付けます。どちらも同じワークシートにあります。これまでに読んだチュートリアルから遠く離れたところまで到達することができました。その情報に感謝します。次に達成しようとしているのは、ワークシートの列 B の各値を列 O の各値で検索して、列 O の値が列 B の文字列値に含まれているかどうかを確認することです。一致が見つかったら、列 g に表示する列 O の値。
コードを実行すると、最初から最後まで処理されますが、列 g に値が表示されません。
コードは次のとおりです。
Sub StartProcess()
Dim wbk As Workbook
strDataFile = "C:\Documents and Settings\Administrator\Desktop\ImportConvert.xlsx"
strMasterFile = "C:\Documents and Settings\Administrator\Desktop\ControlBook.xlsm"
strClientFile = "C:\Documents and Settings\Administrator\Desktop\Clients.xlsx"
Set wbk = Workbooks.Open(strDataFile)
With wbk.Sheets("Data")
Range("c:h").Copy
End With
Set wbk = Workbooks.Open(strMasterFile)
With wbk.Sheets("Deposits")
Range("a:f").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With
wbk.Save
wbk.Close
Set wbk = Workbooks.Open(strClientFile)
With wbk.Sheets("ActivePayee")
Range("a:c").Copy
End With
Set wbk = Workbooks.Open(strMasterFile)
With wbk.Sheets("Clients")
Range("m:o").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With
Dim rngSub As Range
Dim rngSrch As Range
For Each rngSub In Range("o2:o1000")
For Each rngSrch In Range("b2:b1000")
If InStr(rngSrch, rngSub) > 0 Then
rngSrch.Offset(, 5) = rngSub.Value
End If
Next
Next
End Sub
これは最もエレガントな解決策ではありませんが、私が助けようとしている人はせっかちで、今すぐそれを望んでいます (適切に構築されているかどうかは関係ありません)。彼が落ち着いたら戻って、このプロジェクトを構築するためのよりエレガントな方法を学びます。この男がパニックにならないように何かを与えたいだけです。
私は最小限の VBA 露出でこれに到達しましたが、PhP、mySQL などを介したプログラミングには精通しています。90 年代後半から 2000 年代初頭にかけて VBA をいじりましたが、長い間 VBA に触れていませんでした。
あらゆる助けを前もって感謝します。