สอบถามการเขียนcodeครับ
Posted: 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คลังคำตอบแห่งความรู้จากคนไทย เพื่อโลกที่ต้องการเข้าใจในสิ่งเล็ก ๆ อย่างลึกซึ้ง
https://www.snasui.com/
Code: Select all
Application.Goto Reference:= _
"OFFSET('[database.xlsx]sheet1'!R1C1,MATCH(R10C30,INDEX('[database.xlsx]sheet1'!R2C1:R50000C1,0),0),45)"
ActiveCell.Selectควรแนบไฟล์ที่เกี่ยวข้องมาด้วยครับ เพื่อเพื่อนๆ สมาชิกจะได้ทดสอบได้ครับsakajohn wrote: Tue Nov 27, 2018 4:26 pmถ้าผมต้องการให้เมือ่ค้นหาตำแหน่งเจอแล้วให้เลือกcell ขวามืออีก 2 ตำแหน่ง เช่น ตำแหน่งที่ 45 คือ cell AT10 ต้องการให้เลือก AU10, AV10 ด้วย จะต้องปรับcode อย่างไรครับ เพราะตอนนี้ ถ้าผมเพิ่ม ...),0),45,2) ก็จะกลายเป็นว่าเลือกลงด้านล่างมา 2 Cell ครับ แต่ไปทางขวาทำไม่ได้ครับCode: Select all
Application.Goto Reference:= _ "OFFSET('[database.xlsx]sheet1'!R1C1,MATCH(R10C30,INDEX('[database.xlsx]sheet1'!R2C1:R50000C1,0),0),45)" ActiveCell.Select
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
ที่ว่าแปลกคือ อะไรครับ ช่วยแจ้งรายละเอียดที่แปลกด้วยครับ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
Code: Select all
ActiveCell.Offset(0, 0).Clear
ActiveCell.Offset(0, 1).Clear
ActiveCell.Offset(0, 2).Clear
ปรับเป็น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