import xlwings as xw

def sub1():
    wb = xw.Book(r'C:\Users\user\OneDrive\デスクトップ\Book4.xlsx')
    wb.app.activate(steal_focus=True)
    ws = wb.sheets[0]

    code_list = [] #本来はcsvからデータ取得
    for i,code in enumerate(code_list):
        ws.cells(i + 1, 1).value = str(code)

def sub2():
    wb = xw.Book(r'C:\Users\user\OneDrive\デスクトップ\Book4.xlsx')
    wb.app.activate(steal_focus=True)
    ws = wb.sheets[0]

    code_list = [] #本来はcsvからデータ取得
    for i,code in enumerate(code_list):
        while not ws.cells(i+1, 1).value:
            ws.cells(i + 1, 1).value = str(code)


def sub3():
    wb = xw.Book(r'C:\Users\user\OneDrive\デスクトップ\Book4.xlsx')
    wb.app.activate(steal_focus=True)
    ws = wb.sheets[0]

    code_list = [] #本来はcsvからデータ取得
    for i,code in enumerate(code_list):
        set_cellvalue_value(ws.cells(i + 1, 1),str(code))


def set_cellvalue_value(ws_value, setvalue):
    while not ws_value.value:
        ws_value.value = setvalue


if __name__ == "__main__":
    sub1() #上手く行かないコード
            #セルにデータを書き込みに行くが上手く反映できない場合あり

    sub2() #対策を考えたコード(上手く動く)


    sub3() #対策を考えたコード(上手く動かない)


    #sub2とsub3の処理は同等と考えているのですが違うものなのでしょうか？
    #手段は問わないので解決方法を教えてもらえるとうれしいです。