• 締切済み

エクセルのマクロ

下記のマクロを実行するといつも.Findのところでフリーズしてしまいます。 同じ方法で違うBookからの取込には不具合はないのですが、何故だかわかりません。 ちょっと長くなりますが、どなたか教えてください。 'Function fn_KAKUNIN_Update(strSheetName As String, strInBookName As String) '変数宣言 Dim wksInSheet As Worksheet '入力シート Dim wkbInBook As Workbook '入力ブック Dim wksUpSheet As Worksheet '更新するシート Dim lngKAKUNIN_MaxRow As Long Dim lngSYACHO_MaxRow As Long Dim intMsg As Integer Dim strGenbaNo As String Dim i As Long Dim j As Long Dim rngFind As Range Dim lngStrNo As Long Set wkbInBook = Workbooks(strInBookName) Set wksInSheet = wkbInBook.Worksheets Set wksUpSheet = Workbooks(pstrBookName).Worksheets(strSheetName) fn_KAKUNIN_Update = 1 lngKAKUNIN_MaxRow = wksInSheet.Range("C4").CurrentRegion.Rows.Count lngSYACHO_MaxRow = wksUpSheet.Range("H4").CurrentRegion.Rows.Count lngStrNo = 4 For i = lngStrNo To lngSYACHO_MaxRow strGenbaNo = wksUpSheet.Range("H" & i) With wksInSheet.Range("C4:C" & lngKAKUNIN_MaxRow) Set rngFind = .Find(strGenbaNo, LookIn:=xlValues, MatchCase:=False) If rngFind Is Nothing Then Else

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

最初に、関係ないところに目が行くのですが、なぜ、コメント表示になっているのでしょうか? こういうのは、通常、ユーザーファンクションではなくて、プロシージャですよね? 'Function fn_KAKUNIN_Update(strSheetName As String, strInBookName As String) そして、 >fn_KAKUNIN_Update = 1 これなんですか? だったら、再帰するにしても、まったく引数がないのですが、何かの間違いですか? どうなっているのでしょうか? 次に本題。 > Dim wksUpSheet As Worksheet '更新するシート として Set wksInSheet = wkbInBook.Worksheets With wksInSheet.Range("C4:C" & lngKAKUNIN_MaxRow) ワーク・シートコレクションを入れて、wkbinSheet に、Rangeオブジェクトで、Find メソッドが行けるのか、2002までのプロパティ・リストには出てきません。私の間違いかしら? >違うBookからの取込には不具合はないのですが、 そうなのでしょうか? >lngKAKUNIN_MaxRow = wksInSheet.Range("C4").CurrentRegion.Rows.Count >lngSYACHO_MaxRow = wksUpSheet.Range("H4").CurrentRegion.Rows.Count それと、これは、シートのデータ次第ですが、状況によって、取れないか、誤動作する可能性がありますね。最大行だと思いますが、そういう使い方よりも、Endプロパティのほうが確実ではないでしようか?

関連するQ&A