:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser
🪷 คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ

สอบถามโค้ดการเติม เครื่องหมาย / ลงในเซล

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
User avatar
tigerwit
Silver
Silver
Posts: 553
Joined: Wed Mar 31, 2010 10:51 pm
Location: สกลนคร
Excel Ver: 2019
Contact:

สอบถามโค้ดการเติม เครื่องหมาย / ลงในเซล

#1

Post by tigerwit »

Code: Select all

 Sub FillColumn()
 Dim lastRow As Long
lastRow = Application.CountIf(Range("d2:d" & Cells(Rows.Count, 4).End(xlUp).Row), ">""")
    ActiveCell.Resize(lastRow, 1).Select
    Selection.Value = "/"
    Range("G7").Select
     End Sub
จากไฟล์ที่แนบมา ต้องการคลิกปุ่มเช็คเวลา แล้วให้เติม / ลงในช่องแรกที่เลือกไว้ ลงไปจนถึงแถวที่มีข้อมูลคนสุดท้าย
แล้วให้เคอร์เซอร์กระโดดไปอยู่ที่เซลแรก ในช่องถัดไป
ตัวอย่างเช่น
เริ่มต้น เลือก F7 แล้วคลิก เช็คเวลาเรียน จะเติม / ลงไปถึง F23
จากนั้นให้เคอร์เซอร์กระโดดไปอยู่ที่ เซล G7
พอคลิก เช็คเวลาเรียนอีกครั้ง ก็จะเติม / ลงไปแล้วถึง G23
แล้วเคอร์เซอร์กระโดดไปอยู่ที่ H7
เป็นแบบนี้ไปต้องเพิ่มโค้ดอย่างไรครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31177
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามโค้ดการเติม เครื่องหมาย / ลงในเซล

#2

Post by snasui »

:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Sub FillColumn()
    Dim lastRow As Long
    With Worksheets("Time")
    '    lastRow = Application.CountIf(Range("d2:d" & Cells(Rows.Count, 4).End(xlUp).Row), ">""")
        lastRow = .Range("d" & .Rows.Count).End(xlUp).Row
'        ActiveCell.Resize(lastRow, 1).Select
'        Selection.Value = "/"
        .Range(.Cells(Selection.Row, Selection.Column), .Cells(lastRow, Selection.Column)).Value = "/"
'        Range("G7").Select
        Selection.Offset(0, 1).Select
    End With
End Sub
User avatar
tigerwit
Silver
Silver
Posts: 553
Joined: Wed Mar 31, 2010 10:51 pm
Location: สกลนคร
Excel Ver: 2019
Contact:

Re: สอบถามโค้ดการเติม เครื่องหมาย / ลงในเซล

#3

Post by tigerwit »

ขอบคุณครับ
ได้นำไปใช้จริงกับไฟล์ที่ทำแล้วมีปัญหาติดขัดนิดหน่อย
เนื่องจากว่าไฟล์ที่จะใช้จริง รายชื่อนักเรียนจะถูกเชื่อมโยงมาจากอีกชีทหนึ่ง ทำให้โค้ดที่แนะนำมา

Code: Select all

Sub FillColumn()
    Dim lastRow As Long
    With Worksheets("Time")
    '    lastRow = Application.CountIf(Range("d2:d" & Cells(Rows.Count, 4).End(xlUp).Row), ">""")
        lastRow = .Range("d" & .Rows.Count).End(xlUp).Row
'        ActiveCell.Resize(lastRow, 1).Select
'        Selection.Value = "/"
        .Range(.Cells(Selection.Row, Selection.Column), .Cells(lastRow, Selection.Column)).Value = "/"
'        Range("G7").Select
        Selection.Offset(0, 1).Select
    End With
End Sub
ไม่หยุดที่แถวสุดท้ายที่มีรายชื่อ
ผมลองปรับแก้ดูแล้วตามนี้

Code: Select all

 Sub FillColumn2()
 ' Codeที่กำลังปรับแก้
     Dim lastRow As Long
    With Worksheets("Time")
        lastRow = Application.CountIf(Range("d2:d" & Cells(Rows.Count, 4).End(xlUp).Row), ">""")
        ActiveCell.Resize(lastRow, 1).Select
        Selection.Value = "/"
'        .Range(.Cells(Selection.Row, Selection.Column), .Cells(lastRow, Selection.Column)).Value = "/"
'        Range("G7").Select
        Selection.Offset(0, 1).Select
    End With
End Sub
ปรากฎว่าหยุดที่แถวสุดท้ายที่มีรายชื่อแล้ว แต่ ในคลอลัมนน์ถัดไปนั้นกลายเป็นว่า ถูกเลือกทั้งหมดคอลัมนน์
จะแก้ไขเพิ่มเติมอย่างไรครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31177
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามโค้ดการเติม เครื่องหมาย / ลงในเซล

#4

Post by snasui »

:D ตัวอย่างการปรับ Code ครับ

Code: Select all

'Other code
Selection.Cells(1).Offset(0, 1).Select
'Other code
หรือหากต้องการจะวางเมาส์ตำแหน่งใด ๆ แล้วให้แสดงเครื่องหมาย / ไปจนบรรทัดสุดท้ายที่มีข้อมูลสามารถปรับเป็นด้านล่างครับ

Code: Select all

Sub FillColumn()
    Dim lastRow As Long
    Dim i As Long, r As Range, j As Long
    With Worksheets("Time")
        Set r = .Range("d7")
        Do While r.Offset(i, 0).Value <> ""
            i = i + 1
        Loop
        lastRow = r.Offset(i - 1, 0).Row
        If Selection.Row <= lastRow Then
            .Range(Selection, .Cells(lastRow, Selection.Column)).Value = "/"
            Selection.Offset(0, 1).Select
        End If
    End With
End Sub
User avatar
tigerwit
Silver
Silver
Posts: 553
Joined: Wed Mar 31, 2010 10:51 pm
Location: สกลนคร
Excel Ver: 2019
Contact:

Re: สอบถามโค้ดการเติม เครื่องหมาย / ลงในเซล

#5

Post by tigerwit »

ขอบคุณครับ
เรียนถามต่อว่า
กรณีที่เมื่อเช็คเวลาไปแล้วจนถึงคลอลัมน์สุดท้าย
และคลอลัมน์ถัดไปจะเป็นสูตร Sum เวลาเรียนทั้งหมดและล็อคเซลไว้อยู่
จะเขียนโค๊ดไม่ให้โดดไปคลอลัมน์ที่มีสูตรหรือคลอลัมน์ที่ถูกล็อคเซลไว้ครับ
จากไฟล์ที่แนบ คือไม่ให้โดดไปที่ เซล AT7
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31177
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามโค้ดการเติม เครื่องหมาย / ลงในเซล

#6

Post by snasui »

:D ตรวจสอบการ Locked ได้ครับ

if x.locked then exit sub

ลองนำไปปรับใช้ดูก่อน ติดแล้วค่อยนำสิ่งที่ปรับแล้วมาถามกันต่อครับ
User avatar
tigerwit
Silver
Silver
Posts: 553
Joined: Wed Mar 31, 2010 10:51 pm
Location: สกลนคร
Excel Ver: 2019
Contact:

Re: สอบถามโค้ดการเติม เครื่องหมาย / ลงในเซล

#7

Post by tigerwit »

สวัสดีครับพึ่งกลับมาจากออกทริปส์ ได้การบ้าน

Code: Select all

:D ตรวจสอบการ Locked ได้ครับ
if x.locked then exit sub
ด้วยความไม่รู้ จึงได้พยายามด้นสด ดั้นเมฆ สุดท้ายจนปัญหา
ก็ยังไม่ได้ได้อยู่ดี

Code: Select all

Sub FillColumn2()
    Dim lastRow As Long
    Dim i As Long, r As Range, j As Long
    With Worksheets("Time")
        Set r = .Range("d7")
        Do While r.Offset(i, 0).Value <> ""
            i = i + 1
        Loop
          lastRow = r.Offset(i - 1, 0).Row
        If Selection.Row <= lastRow Then
            .Range(Selection, .Cells(lastRow, Selection.Column)).Value = "/"
            Selection.Offset(0, 1).Select
            If Range(Selection, .Cells(lastRow, Selection.Column)).Locked = True Then Exit Sub
        End If
    End With
End Sub
รบกวนให้คำแนะนำเพิ่มอีกสักนิดครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31177
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: สอบถามโค้ดการเติม เครื่องหมาย / ลงในเซล

#8

Post by snasui »

:D ตัวอย่างการปรับ Code ครับ

Code: Select all

'Other code...
If Selection.Row <= lastRow Then
    .Range(Selection, .Cells(lastRow, Selection.Column)).Value = "/"
    If Selection.Offset(0, 1).Locked Then Exit Sub
    Selection.Offset(0, 1).Select
'    If Range(Selection, .Cells(lastRow, Selection.Column)).Locked = True Then Exit Sub
End If
'Other code...
User avatar
tigerwit
Silver
Silver
Posts: 553
Joined: Wed Mar 31, 2010 10:51 pm
Location: สกลนคร
Excel Ver: 2019
Contact:

Re: สอบถามโค้ดการเติม เครื่องหมาย / ลงในเซล

#9

Post by tigerwit »

ขอบคุณครับ
Post Reply