2

ここに画像の説明を入力してください

  1. Range( "D:D")の赤いカラーボックスは、Me.ComboBox1.Value
  2. 黄色と緑色はそれぞれMe.TextBox1とからのデータMe.TextBox2です。Meでは、で選択した値に従って、このシートに値Me.TextBox1Me.TextBox2挿入しますMe.ComboBox1
  3. したがって、この場合、ユーザーが選択した赤に応じて黄色と緑の色を入力する必要がありました。
  4. もう1つの追加事項は.OffSet(1,0).EntireRow.Insert、黄色と緑色のデータの最後の行にを配置することです。
4

2 に答える 2

1

これはそれを行う必要があります:

nextrow = Sheets("DB Cust").Range("C" & Sheets("DB Cust").Rows.Count).End(xlUp).Row + 1

更新あなたの編集に続いて、私はこれに似た何かがあなたが必要とするものであるかもしれないと思います。これは、データの各ブロックが機能するために、列Eに常に値があることに依存することに注意してください。

Dim lngNewRow As Long
Dim strLookupValue As String

strLookupValue = "A" ' or B/C/D etc.

lngNewRow = Sheets("DB Cust").Range("D:D").Find(strLookupValue).Offset(, 1).End(xlDown).Row + 1
Sheets("DB Cust").Rows(lngNewRow).Insert
Sheets("DB Cust").Cells(lngNewRow, "E").Value = "Data for column E"
Sheets("DB Cust").Cells(lngNewRow, "F").Value = "Data for column F"

ポイント4に関して、「D」がリストの最後の値である場合、なぜ追加の空白行を挿入する必要があるのでしょうか。おそらく、その下のすべての行は空白です。

于 2012-12-26T21:25:30.157 に答える
0

よくわかりませんが、範囲を呼び出す方法は私には奇妙に思えます。カウント範囲を定義する別の方法を試してください。

これを変える:

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変数をまとめて削除することをお勧めします。

頑張って、どうなるか教えてください。

于 2012-12-26T18:42:35.670 に答える