Page 1 of 1

ให้ขึ้น Show คนที่เข้ามา Update ตาม ชื่อ user ในเครือข่าย

Posted: Tue Nov 15, 2011 5:34 pm
by prawitj
สมมติว่ามีการ Update ข้อมูลใน column A แล้ว จะให้ column b ขึ้นชื่อคนที่ update แบบอัตโนมัติตามชื่อ user ที่ตั้งในเครือข่าย น่ะครับ เพราะ file นี้จะทำเป็น File sharing มี admin เข้ามา update ได้หลายคน เลยอยากจะ รู้ว่าใครที่เข้ามา update ล่าสุดน่ะครับ

Re: ให้ขึ้น Show คนที่เข้ามา Update ตาม ชื่อ user ในเครือข่า

Posted: Tue Nov 15, 2011 6:59 pm
by snasui
:D การแชร์ไฟล์สามารถติดตามได้โดยเข้าเมนู Tools > Track change ก็จะทราบว่าใครเป็นผู้เข้ามา Update ครับ

หากต้องการให้เป็นอัตโนมัติเข้าใจว่าต้องใช้ VBA เข้ามาช่วย หากต้องการใช้ VBA ลองเขียนมาก่อนครับ ติดตรงไหนก็ค่อยมาดูกันต่อครับ

Re: ให้ขึ้น Show คนที่เข้ามา Update ตาม ชื่อ user ในเครือข่า

Posted: Wed Nov 16, 2011 9:37 am
by prawitj
ผม ไม่รู้ Code ว่าจะเขียนอย่างไร ให้ขึ้น show คนที่ มา update
จะถามอาจารย์อีกข้อด้วยครับ
คือผมเขียน code update เวลา ให้เป็น now ใน cclumn "AW" ตาม Code VBA เลยครับ ผม วน Loop เอา เผื่อเวลาแก้ไข เพิ่ม Column จะได้แก้ง่าย
จุดระสงค์คือ ทุก column ที่เป็น สีเหลือง (G-AT) หากมีการ update ช่องใดช่องหนึ่ง แล้วให้ขึ้นเวลา ที่ update ล่าสุดใน AW ซึ่งก็ได้ผลในกรณีที่ update ทีละช่อง
แต่บังเอิญผมได้ลากทุกช่องทีเดียวเพื่อจะลบข้อความ test ก้เลยเห็น bug
เช่นเวลา ผมลบข้อความ ใน col AS และ AT พร้อมกันโดยลากครอบ ปรากฏว่า เวลาที่ update มันไปโผล่ที่ column AX ด้วย แต่ผมต้องการให้ปรากฏที่ col AW ที่เดียว จะทำได้อย่างไรครับ

รบกวนช่วยแนะนำ Code VBA หาคน update มาลงที่ AX ด้วยครับ

Re: ให้ขึ้น Show คนที่เข้ามา Update ตาม ชื่อ user ในเครือข่า

Posted: Thu Nov 17, 2011 3:54 pm
by snasui
:D ลองปรับ Code เป็นตามด้านล่าง ซึ่งเป็นการแสดงชื่อผู้ Update ค่าเข้ามาครับ

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rall As Range, rs As Range
    Application.EnableEvents = False
    With Sheets("po")
        Set r = .Range("G7", .Range("AT" & Rows.Count))
        Set rall = Selection
        If Not Intersect(Target, r) Is Nothing Then
            For Each rs In rall
                .Range("AW" & rs.Row) = Now
                .Range("AX" & rs.Row) = Environ$("username")
            Next rs
        End If
    End With
    Application.EnableEvents = True
End Sub

Re: ให้ขึ้น Show คนที่เข้ามา Update ตาม ชื่อ user ในเครือข่า

Posted: Mon Nov 21, 2011 3:41 pm
by prawitj
ขอบคุณคร๊าบบบบ ใช้ได้แล้ว

Re: ให้ขึ้น Show คนที่เข้ามา Update ตาม ชื่อ user ในเครือข่า

Posted: Mon Nov 21, 2011 4:27 pm
by prawitj
เพิ่งสังเกตุ ว่ามันขึ้น Delay ไป 3 บรรทัดน่ะครับ เช่น เรา Update ที่บรรทัด AT 7 แต่ วันเวลาและผู้ Update มันไปขึ้นที่บรรทัดที่ 10 น่ะครับ ผม พยายามแกะ Code แล้วแต่ทำไม่ได้เลยครับ รบกวนอาจารย์แนะนำด้วยครับ

Re: ให้ขึ้น Show คนที่เข้ามา Update ตาม ชื่อ user ในเครือข่า

Posted: Tue Nov 22, 2011 12:10 am
by snasui
:D ลองปรับเป็นตามด้านล่างครับ

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim s As Range, rs As Range
    Application.EnableEvents = False
    With Sheets("po")
        Set r = .Range("G7", .Range("AT" & Rows.Count))
        If Not Intersect(Target, r) Is Nothing Then
            For Each rs In Target
                .Range("AW" & rs.Row) = Now
                .Range("AX" & rs.Row) = Environ$("username")
            Next rs
        End If
    End With
    Application.EnableEvents = True
 End Sub