Page 1 of 1

Macro ดึงค่าที่ได้ ไปยังอีก sheet ส่งข้อมูลไปบันทึกต่อท้ายรายการที่มีอยู่แล้ว

Posted: Fri Feb 03, 2017 11:46 am
by gamefunza
คร่าวๆ คือต้องการเก็บประวัติพนักงานที่มาเข้าใช้ห้องพยาบาลครับ
ก็มีค่าทั่วไปๆ เช่น ชื่อ , นามสกุล , แผนก
ต้องการให้ เมื่อกดปุ่ม button แล้ว ดึงข้อมูลไปยังอีก sheet ได้ และต่อท้ายไปเรื่อยๆครับ
ขอคำแนะนำหน่อยครับผม

แนบไฟลรูปภาพมา 2 รูป หน้าฟอรม และ sheet ที่จัดเก็บประวัติ

Re: Macro ดึงค่าที่ได้ ไปยังอีก sheet ส่งข้อมูลไปบันทึกต่อท้ายรายการที่มีอยู่แล้ว

Posted: Fri Feb 03, 2017 2:01 pm
by parakorn
แนบตัวอย่างไฟล์ เพื่อให้ผู้ตอบสามารถช่วยเหลือได้
พร้อมลองเขียนโค้ดมาเอง พอสังเขป ตามกฎของบอร์ดครับ
:D

Re: Macro ดึงค่าที่ได้ ไปยังอีก sheet ส่งข้อมูลไปบันทึกต่อท้ายรายการที่มีอยู่แล้ว

Posted: Tue Feb 07, 2017 2:12 pm
by gamefunza
parakorn wrote:แนบตัวอย่างไฟล์ เพื่อให้ผู้ตอบสามารถช่วยเหลือได้
พร้อมลองเขียนโค้ดมาเอง พอสังเขป ตามกฎของบอร์ดครับ
:D

Code: Select all

Sub Get_Information()
    Name = Sheets(1).Cells(5, 4).Value
    LastName = Sheets(1).Cells(5, 5).Value
    Blood = Sheets(1).Cells(6, 4).Value
    Position = Sheets(1).Cells(7, 4).Value
    Gender = Sheets(1).Cells(8, 4).Value
    Division = Sheets(1).Cells(9, 4).Value
     Sheets(5).Cells(1, 1).Value = Name
     Sheets(5).Cells(1, 2).Value = LastName
     Sheets(5).Cells(1, 3).Value = Blood
     Sheets(5).Cells(1, 4).Value = Position
     Sheets(5).Cells(1, 5).Value = Gender
     Sheets(5).Cells(1, 6).Value = Division 
End Sub
ผมลองเขียนได้ประมาณนี้ครับ แต่ผมอยากได้ให้มันไปต่อท้ายข้อมูลเก่าอยากให้ แนะนำวิธีหน่อยครับ
แนบไฟลมาแล้วครับ ขอบคุณครับ
Get_Information.xlsm

Re: Macro ดึงค่าที่ได้ ไปยังอีก sheet ส่งข้อมูลไปบันทึกต่อท้ายรายการที่มีอยู่แล้ว

Posted: Tue Feb 07, 2017 2:38 pm
by puriwutpokin
สร้างหัวคอลัมไว้ด้วยนะครับแล้วใช้โค้ดนี้ดูครับ

Code: Select all

Sub Get_Information()
Dim Lrow  As Integer
    Lrow = Sheets(5).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
    Name = Sheets(1).Cells(5, 4).Value
    LastName = Sheets(1).Cells(5, 5).Value
    Blood = Sheets(1).Cells(6, 4).Value
    Position = Sheets(1).Cells(7, 4).Value
    Gender = Sheets(1).Cells(8, 4).Value
    Division = Sheets(1).Cells(9, 4).Value
     Sheets(5).Cells(Lrow, 1).Value = Name
     Sheets(5).Cells(Lrow, 2).Value = LastName
     Sheets(5).Cells(Lrow, 3).Value = Blood
     Sheets(5).Cells(Lrow, 4).Value = Position
     Sheets(5).Cells(Lrow, 5).Value = Gender
     Sheets(5).Cells(Lrow, 6).Value = Division
End Sub

Re: Macro ดึงค่าที่ได้ ไปยังอีก sheet ส่งข้อมูลไปบันทึกต่อท้ายรายการที่มีอยู่แล้ว

Posted: Tue Feb 07, 2017 3:02 pm
by gamefunza
puriwutpokin wrote:สร้างหัวคอลัมไว้ด้วยนะครับแล้วใช้โค้ดนี้ดูครับ

Code: Select all

Sub Get_Information()
Dim Lrow  As Integer
    Lrow = Sheets(5).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
    Name = Sheets(1).Cells(5, 4).Value
    LastName = Sheets(1).Cells(5, 5).Value
    Blood = Sheets(1).Cells(6, 4).Value
    Position = Sheets(1).Cells(7, 4).Value
    Gender = Sheets(1).Cells(8, 4).Value
    Division = Sheets(1).Cells(9, 4).Value
     Sheets(5).Cells(Lrow, 1).Value = Name
     Sheets(5).Cells(Lrow, 2).Value = LastName
     Sheets(5).Cells(Lrow, 3).Value = Blood
     Sheets(5).Cells(Lrow, 4).Value = Position
     Sheets(5).Cells(Lrow, 5).Value = Gender
     Sheets(5).Cells(Lrow, 6).Value = Division
End Sub
ใช้งานได้ครับผม รบกวนอธิบาย code ส่วนนี้ทีครับ ขอบคุณครับ

Code: Select all

Dim Lrow  As Integer
 Lrow = Sheets(5).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
 

Re: Macro ดึงค่าที่ได้ ไปยังอีก sheet ส่งข้อมูลไปบันทึกต่อท้ายรายการที่มีอยู่แล้ว

Posted: Tue Feb 07, 2017 3:09 pm
by puriwutpokin
Dim Lrow As Integer เป็นการประกาศตัวแปร ให้ โปรแกรมรับทราบครับ Integer ประกาศเป็นจำนวนเต็มหรือตัวเลข ประมาณนี้ครับ
โดยให้ Lrow เท่ากับ ค่าช่วงของชีทที่5 โดยนับช่วง ที่ Cells(Rows.Count, 1) ไปตำแหน่งสุดท้ายแล้ว นับถัดลงไป 1 Row, Offset(1, 0).Row ประมาณนี้ ต้องอาศัย แกะและTest ดูครับ ผมไม่ได้เรียนมาอธิบายได้เท่านี้เองครับ

Re: Macro ดึงค่าที่ได้ ไปยังอีก sheet ส่งข้อมูลไปบันทึกต่อท้ายรายการที่มีอยู่แล้ว

Posted: Tue Feb 07, 2017 3:12 pm
by gamefunza
puriwutpokin wrote:Dim Lrow As Integer เป็นการประกาศตัวแปร ให้ โปรแกรมรับทราบครับ Integer ประกาศเป็นจำนวนเต็มหรือตัวเลข ประมาณนี้ครับ
โดยให้ Lrow เท่ากับ ค่าช่วงของชีทที่5 โดยนับช่วง ที่ Cells(Rows.Count, 1) ไปตำแหน่งสุดท้ายแล้ว นับถัดลงไป 1 Row, Offset(1, 0).Row ประมาณนี้ ต้องอาศัย แกะและTest ดูครับ ผมไม่ได้เรียนมาอธิบายได้เท่านี้เองครับ
ครับผม พอเข้าใจอยู่ครับ ขอบคุณมากครับ