よくわかりませんが、範囲を呼び出す方法は私には奇妙に思えます。カウント範囲を定義する別の方法を試してください。
これを変える:
nextrow = WorksheetFunction.CountA(Sheets("DB Cust").Range("C:C")) + 2
これに:
Dim myWB as Workbook, DBcust as Worksheet
Set myWB = Excel.ActiveWorkbook
Set DBcust = myWB.Worksheets("DB Cust")
nextrow = Excel.WorksheetFunction.CountA(DBcust.Range(DBcust.Cells(1,3),DBcust.Cells(DBcust.UsedRange.Rows.Count,3)) + 2
信頼性を高めるために本とシートを変数に割り当てましたが、必要に応じて明示的に再度指定できます。このコードは、ワークブックが現在アクティブなワークブックであることを前提としています。そうでない場合は、ワークブック名を使用して変数を設定する必要があります。
また、「With」ブロック内にオフセット関数の「rfound」部分が必要なようには見えません。。。それが「With」の目的です。それはほんの小さなことですが、そのような無意味なコードはあなたに余分な頭痛を引き起こすだけなので、私のアドバイスはそれを取り除くことです。
これをVBAIDEにロードしていないので、スペルミスがないか再確認してください。ありがとう!
アップデート:
あなたのコメントを読んだ後、私はあなたのコードとそれが何をしようとしているのかを詳しく調べました。textbox1の値(それが何であれ...この部分を少し説明すると役立つでしょう)を、combobox1でユーザーが定義した検索結果の場所からオフセットされたセルに配置しようとしているようです。nextrow変数は行オフセットパラメーター内にありますが、場所は既に目的の場所にあります。これを変更してみてください:
With rfound
rfound.Offset(nextrow, 1).Value = TextBox1.Value
rfound.Offset(nextrow, 2).Value = TextBox1.Value
rfound.Offset(nextrow, 3).Value = TextBox1.Value
rfound.Offset(nextrow, 4).Value = TextBox1.Value
rfound.Offset(nextrow, 5).Value = TextBox1.Value
rfound.Offset(nextrow, 6).Value = TextBox1.Value
rfound.Offset(nextrow, 7).Value = TextBox1.Value
rfound.Offset(nextrow, 8).Value = TextBox1.Value
MsgBox ("Data entry success")
End With
これに:
With rfound
.Offset(0, 1).Value = TextBox1.Value
.Offset(0, 2).Value = TextBox1.Value
.Offset(0, 3).Value = TextBox1.Value
.Offset(0, 4).Value = TextBox1.Value
.Offset(0, 5).Value = TextBox1.Value
.Offset(0, 6).Value = TextBox1.Value
.Offset(0, 7).Value = TextBox1.Value
.Offset(0, 8).Value = TextBox1.Value
MsgBox ("Data entry success")
End With
以前のアドバイスに従って、冗長な「rfound」も削除したことに気付くかもしれません。これが機能するかどうかを確認し、機能する場合は、newrow変数をまとめて削除することをお勧めします。
頑張って、どうなるか教えてください。