Page 1 of 1

สอบถามการเขียนcodeครับ

Posted: Tue Nov 27, 2018 4:26 pm
by sakajohn

Code: Select all

Application.Goto Reference:= _
        "OFFSET('[database.xlsx]sheet1'!R1C1,MATCH(R10C30,INDEX('[database.xlsx]sheet1'!R2C1:R50000C1,0),0),45)"
    ActiveCell.Select
ถ้าผมต้องการให้เมือ่ค้นหาตำแหน่งเจอแล้วให้เลือกcell ขวามืออีก 2 ตำแหน่ง เช่น ตำแหน่งที่ 45 คือ cell AT10 ต้องการให้เลือก AU10, AV10 ด้วย จะต้องปรับcode อย่างไรครับ เพราะตอนนี้ ถ้าผมเพิ่ม ...),0),45,2) ก็จะกลายเป็นว่าเลือกลงด้านล่างมา 2 Cell ครับ แต่ไปทางขวาทำไม่ได้ครับ

Re: สอบถามการเขียนcodeครับ

Posted: Tue Nov 27, 2018 7:39 pm
by puriwutpokin
sakajohn wrote: Tue Nov 27, 2018 4:26 pm

Code: Select all

Application.Goto Reference:= _
        "OFFSET('[database.xlsx]sheet1'!R1C1,MATCH(R10C30,INDEX('[database.xlsx]sheet1'!R2C1:R50000C1,0),0),45)"
    ActiveCell.Select
ถ้าผมต้องการให้เมือ่ค้นหาตำแหน่งเจอแล้วให้เลือกcell ขวามืออีก 2 ตำแหน่ง เช่น ตำแหน่งที่ 45 คือ cell AT10 ต้องการให้เลือก AU10, AV10 ด้วย จะต้องปรับcode อย่างไรครับ เพราะตอนนี้ ถ้าผมเพิ่ม ...),0),45,2) ก็จะกลายเป็นว่าเลือกลงด้านล่างมา 2 Cell ครับ แต่ไปทางขวาทำไม่ได้ครับ
ควรแนบไฟล์ที่เกี่ยวข้องมาด้วยครับ เพื่อเพื่อนๆ สมาชิกจะได้ทดสอบได้ครับ

Re: สอบถามการเขียนcodeครับ

Posted: Wed Nov 28, 2018 10:58 am
by sakajohn
ตอนนี้ผมสร้างไฟล์ใหม่และเขียนcodeใหม่ ซึ่งสามารถใช้งานได้ แต่รู้สึกว่ามันแปลกๆครับ รบกวนช่วยแนะนำด้วยครับ

Code: Select all

Sub editdata_()
Set rg = Range("F2")

rg.Activate
If Application.CountA(Range("F2")) = 0 Then
    MsgBox "ไม่มีข้อมูลให้พิมพ์"
    Exit Sub
End If

Dim x As Integer
    x = MsgBox("ต้องการลบข้อมูล ใช่หรือไม่", vbOKCancel)
    If x = vbOK Then
    
    Application.Goto Reference:="OFFSET(R2C6,0,6,1,2)"
    Selection.Copy
    Workbooks("DataBase.xlsx").Activate
    ThisWorkbook.Activate
    Application.Goto Reference:= _
        "OFFSET('[database.xlsx]sheet1'!R1C1,MATCH(R2C6,INDEX('[database.xlsx]sheet1'!R2C1:R5000C1,0),0),6)"
    ActiveCell.Select
ActiveCell.Offset(0, 0).Clear
ActiveCell.Offset(0, 1).Clear
ActiveCell.Offset(0, 2).Clear

ActiveWorkbook.Save
ThisWorkbook.Activate   

End If

End Sub

Re: สอบถามการเขียนcodeครับ

Posted: Wed Nov 28, 2018 11:24 am
by puriwutpokin
sakajohn wrote: Wed Nov 28, 2018 10:58 am ตอนนี้ผมสร้างไฟล์ใหม่และเขียนcodeใหม่ ซึ่งสามารถใช้งานได้ แต่รู้สึกว่ามันแปลกๆครับ รบกวนช่วยแนะนำด้วยครับ

Code: Select all

Sub editdata_()
Set rg = Range("F2")

rg.Activate
If Application.CountA(Range("F2")) = 0 Then
    MsgBox "ไม่มีข้อมูลให้พิมพ์"
    Exit Sub
End If

Dim x As Integer
    x = MsgBox("ต้องการลบข้อมูล ใช่หรือไม่", vbOKCancel)
    If x = vbOK Then
    
    Application.Goto Reference:="OFFSET(R2C6,0,6,1,2)"
    Selection.Copy
    Workbooks("DataBase.xlsx").Activate
    ThisWorkbook.Activate
    Application.Goto Reference:= _
        "OFFSET('[database.xlsx]sheet1'!R1C1,MATCH(R2C6,INDEX('[database.xlsx]sheet1'!R2C1:R5000C1,0),0),6)"
    ActiveCell.Select
ActiveCell.Offset(0, 0).Clear
ActiveCell.Offset(0, 1).Clear
ActiveCell.Offset(0, 2).Clear

ActiveWorkbook.Save
ThisWorkbook.Activate   

End If

End Sub
ที่ว่าแปลกคือ อะไรครับ ช่วยแจ้งรายละเอียดที่แปลกด้วยครับ

Re: สอบถามการเขียนcodeครับ

Posted: Wed Nov 28, 2018 12:43 pm
by sakajohn

Code: Select all

ActiveCell.Offset(0, 0).Clear
ActiveCell.Offset(0, 1).Clear
ActiveCell.Offset(0, 2).Clear
อย่างนี้ถูกต้องมั้ยครับหรือมีวิธีที่ดีกว่านี้ครับ

Re: สอบถามการเขียนcodeครับ

Posted: Wed Nov 28, 2018 1:02 pm
by puriwutpokin
sakajohn wrote: Wed Nov 28, 2018 12:43 pm

Code: Select all

ActiveCell.Offset(0, 0).Clear
ActiveCell.Offset(0, 1).Clear
ActiveCell.Offset(0, 2).Clear
อย่างนี้ถูกต้องมั้ยครับหรือมีวิธีที่ดีกว่านี้ครับ
ปรับเป็น

Code: Select all

ActiveCell.Offset(0, 0).Resize(, 3).Clear

Re: สอบถามการเขียนcodeครับ

Posted: Wed Nov 28, 2018 1:04 pm
by sakajohn
ขอบคุณครับ