vba - Updating an excel worksheet from another sheet, depending on a value -


i trying create if statement lets me send number , value workbook deepening on value in 3rd cell (weather cell is true or false"). code want run if statement true below. have tested code, , works, want happen if third cell in row true. needs carry information number , value rows value true function below.

        dim itemname string         dim itemprice string         dim mydata workbook          worksheets("sheet1").select         invoicenumber = range("a2")         qty = range("b2")         updated = range("c2")           set mydata = workbooks.open("hd:users:user:desktop:inventory.xlsm")         worksheets("orders").select         worksheets("orders").range("a15").select         rowcount = worksheets("orders").range("a15").currentregion.rows.count         worksheets("orders").range("a15")         .offset(rowcount, 0) = invoicenumber         .offset(rowcount, 1) = qty         .offset(rowcount, 2) = updated          end  

your code looks use loop go through series of rows suppose may case single operation required.

dim itemname string dim itemprice string dim mydata workbook dim sinvoicenumber string, dqty double, bupdated boolean, irowcount long  worksheets("sheet1")     sinvoicenumber = .range("a2").value     dqty = .range("b2").value     bupdated = cbool(.range("c2").value)      if bupdated         set mydata = workbooks.open("hd:users:user:desktop:inventory.xlsm")         mydata.worksheets("orders").range("a15")             irowcount = .currentregion.rows.count             .offset(irowcount, 0) = sinvoicenumber             .offset(irowcount, 1) = dqty             .offset(irowcount, 2) = bupdated         end         mydata.close true '<-save , close workbook         .range("c2") = not bupdated  '<- reset updated field     end if  end 

rather loop through rows, bulk transfer operation can used filtering data.

dim itemname string dim itemprice string dim mydata workbook dim irowcount long  worksheets("sheet1")     if .autofiltermode autofiltermode = false     .cells(1, 1).currentregion         .autofilter field:=3, criteria1:="true"         .offset(1, 0).resize(.rows.count - 1, 3)             if cbool(application.subtotal(103, .columns(1)))                 set mydata = workbooks.open("hd:users:user:desktop:inventory.xlsm")                 .cells.copy destination:=mydata.sheets("orders").cells(rows.count, 1).end(xlup).offset(1, 0)                 mydata.close true '<-save , close workbook                 .columns(3).cells = false             end if         end         .autofilter field:=3     end     if .autofiltermode autofiltermode = false end 

that filters on worksheet cell value of true in column c.


Comments