Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如果单元格内容已通过,则vba下一次迭代_Excel_Vba_While Loop_Exists_Goto - Fatal编程技术网

Excel 如果单元格内容已通过,则vba下一次迭代

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

因此,按照我在表中循环的代码,连接到sql server并发送表的数据,我还有一个小小的限制: 我一行一行、一个单元格一个单元格地发送5400行和13列数据(实际上并不慢!),但我需要在某个单元格上设置条件:如果我已经发送了单元格的内容(例如:数据库中已经发送了一个客户机号),我不想插入两次,所以进入下一次迭代。 以下是我的循环的简化版本:

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