Excel 如果单元格内容已通过,则vba下一次迭代
因此,按照我在表中循环的代码,连接到sql server并发送表的数据,我还有一个小小的限制: 我一行一行、一个单元格一个单元格地发送5400行和13列数据(实际上并不慢!),但我需要在某个单元格上设置条件:如果我已经发送了单元格的内容(例如:数据库中已经发送了一个客户机号),我不想插入两次,所以进入下一次迭代。 以下是我的循环的简化版本:Excel 如果单元格内容已通过,则vba下一次迭代,excel,vba,while-loop,exists,goto,Excel,Vba,While Loop,Exists,Goto,因此,按照我在表中循环的代码,连接到sql server并发送表的数据,我还有一个小小的限制: 我一行一行、一个单元格一个单元格地发送5400行和13列数据(实际上并不慢!),但我需要在某个单元格上设置条件:如果我已经发送了单元格的内容(例如:数据库中已经发送了一个客户机号),我不想插入两次,所以进入下一次迭代。 以下是我的循环的简化版本: nrow = 1 While My_range.Offset(nrow).Value <> "" 'continue i
nrow = 1
While My_range.Offset(nrow).Value <> "" 'continue if cell's not empty
'connect to the db and create a command that send the data
Set mobjCmd = New ADODB.Command
With mobjCmd
.ActiveConnection = mobjConn
.CommandText = "INSERT_PRODUCT"
.CommandType = adCmdStoredProc
.CommandTimeout = 0
'append the cell of the second row, first column in the db in the Client_id column in my SQL table
.Parameters.Append .CreateParameter("@Client_id", adChar, adParamInput, 255, Worksheets("My_Sheet").Range("A1").Offset(nrow, 0).Value)
.Execute
Wend
但是如何设置i/o“…”,以便如果它看到一个已经发送的客户机id,它将进入下一个迭代
提前感谢您的帮助 我已经多次遇到这个问题,并且倾向于在每个循环上使用
工作表函数.countif
,检查同一图形的任何实例是否出现在其上方/下方
在你的情况下,这看起来像
If WorksheetFunction.Countif(Range(Cells(1, MyRange.Column), Cells(nrow, MyRange.Column)), MyRange.Offset(nrow).Value) > 0 Then GoTo NextIteration
谢谢@Spencer Barnes的帮助。Countif函数是个好主意。另一种方法也是将存储过程直接修改为SQL。如果数据是干净的,甚至可以使用UPDATE语句(如果存在…UPDATE)
If WorksheetFunction.Countif(Range(Cells(1, MyRange.Column), Cells(nrow, MyRange.Column)), MyRange.Offset(nrow).Value) > 0 Then GoTo NextIteration