Page 1 of 1
ลบข้อมูลที่ต้องการโดยใช้ vba เข้าช่วย
Posted: Thu Dec 04, 2014 1:07 pm
by Totem

เรียนอาจารย์และเพื่อนสมาชิก
ต้องการลบข้อมูล ก่อนลบมี MsgBox เตือน และทำการลบข้อมูลที่มีอยู่ ซึ่งในแต่ละDateอาจจะมีข้อมูลไม่เท่ากัน ช่วยปรับ Code ให้หน่อยครับ
Code: Select all
Sub answerYesNO()
Dim answer As Long
With ActiveSheet
answer = MsgBox("Clear?", vbYesNo + vbQuestion, "data")
If answer = vbYes Then
LastRow = .Range("b" & .Rows.Count).End(xlUp).Row
LastColumn = .Cells(1, .Columns.Count).End(xlToLeft).Column
.Range("b1" & LastRow & LastColumn).ClearContents
Else
End If
End With
End Sub
code ที่ยังไม่ได้ตามที่ต้องการ
Code: Select all
LastRow = .Range("b" & .Rows.Count).End(xlUp).Row
LastColumn = .Cells(1, .Columns.Count).End(xlToLeft).Column
.Range("b1" & LastRow & LastColumn).ClearContents
ขอบคุณครับ
Re: ลบข้อมูลที่ต้องการโดยใช้ vba เข้าช่วย
Posted: Thu Dec 04, 2014 1:19 pm
by snasui

ตัวอย่างการปรับ Code ตามด้านล่างครับ
เปลี่ยน
.Range("b1" & LastRow & LastColumn).ClearContents เป็น
.Range("b1").Resize(lastrow, lastcolumn).ClearContents
Re: ลบข้อมูลที่ต้องการโดยใช้ vba เข้าช่วย
Posted: Thu Dec 04, 2014 1:55 pm
by Totem
snasui wrote:
ตัวอย่างการปรับ Code ตามด้านล่างครับ
เปลี่ยน
.Range("b1" & LastRow & LastColumn).ClearContents เป็น
.Range("b1").Resize(lastrow, lastcolumn).ClearContents

ปรับแล้วลบข้อมูลได้ แต่ ลบไปถึง column AG ไม่สามารถลบไปไม่ถึง LastColumn AP ครับ
Re: ลบข้อมูลที่ต้องการโดยใช้ vba เข้าช่วย
Posted: Thu Dec 04, 2014 2:18 pm
by niwat2811
กรณีที่ Rows หรือ Columns เป็นแบบไดนามิกลองปรับแบบนี้ดูครับว่าใช้ได้ตามต้องการไหม
Code: Select all
Sub answerYesNO()
Dim answer As Long
With ActiveSheet
answer = MsgBox("Clear?", vbYesNo + vbQuestion, "data")
If answer = vbYes Then
lastrow = .Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
lastcolumn = Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column
.Range("b1").Resize(lastrow, lastcolumn).ClearContents
Else
End If
End With
End Sub
Re: ลบข้อมูลที่ต้องการโดยใช้ vba เข้าช่วย
Posted: Thu Dec 04, 2014 2:37 pm
by Totem
niwat2811 wrote:กรณีที่ Rows หรือ Columns เป็นแบบไดนามิกลองปรับแบบนี้ดูครับว่าใช้ได้ตามต้องการไหม
Code: Select all
Sub answerYesNO()
Dim answer As Long
With ActiveSheet
answer = MsgBox("Clear?", vbYesNo + vbQuestion, "data")
If answer = vbYes Then
lastrow = .Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
lastcolumn = Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column
.Range("b1").Resize(lastrow, lastcolumn).ClearContents
Else
End If
End With
End Sub

ขอบคุณครับ แต่ยัง error ตั้งแต่บรรทัด
Code: Select all
lastrow = .Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
ส่วนบรรทัดนี้น่าจะตก
. Code: Select all
lastcolumn = Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column
Re: ลบข้อมูลที่ต้องการโดยใช้ vba เข้าช่วย
Posted: Thu Dec 04, 2014 2:45 pm
by niwat2811
ขอโทษครับน่าจะตก . ไปตัว สำหรับ Code ผมลองใช้กับเครื่องผมแล้วก็ไม่ติด error นะครับ
ยังไงคงต้องรอผู้รู้ท่านอื่นช่วยตอบแล้วครับ
Re: ลบข้อมูลที่ต้องการโดยใช้ vba เข้าช่วย
Posted: Thu Dec 04, 2014 3:09 pm
by Totem
niwat2811 wrote:ขอโทษครับน่าจะตก . ไปตัว สำหรับ Code ผมลองใช้กับเครื่องผมแล้วก็ไม่ติด error นะครับ
ยังไงคงต้องรอผู้รู้ท่านอื่นช่วยตอบแล้วครับ

ขอโทษครับ ผมลองใหม่แล้วใช้งานได้ตามต้องการครับ ขอบคุณครับ
Re: ลบข้อมูลที่ต้องการโดยใช้ vba เข้าช่วย
Posted: Fri Dec 05, 2014 8:20 am
by snasui
Totem wrote:snasui wrote: 
ตัวอย่างการปรับ Code ตามด้านล่างครับ
เปลี่ยน
.Range("b1" & LastRow & LastColumn).ClearContents เป็น
.Range("b1").Resize(lastrow, lastcolumn).ClearContents

ปรับแล้วลบข้อมูลได้ แต่ ลบไปถึง column AG ไม่สามารถลบไปไม่ถึง LastColumn AP ครับ

หากต้องการลบข้อมูลทั้งชีทให้ใช้
หรือหากต้องการลบเฉพาะเฉพาะช่วงข้อมูลที่เคยใช้งานให้ใช้
Code: Select all
ActiveSheet.UsedRange.ClearContents
ตัวอย่าง
Code: Select all
Dim answer As Long
With ActiveSheet
answer = MsgBox("Clear?", vbYesNo + vbQuestion, "data")
If answer = vbYes Then
.UsedRange.ClearContents
End If
End With
Re: ลบข้อมูลที่ต้องการโดยใช้ vba เข้าช่วย
Posted: Tue Dec 09, 2014 11:00 am
by Totem
snasui wrote:Totem wrote:snasui wrote: 
ตัวอย่างการปรับ Code ตามด้านล่างครับ
เปลี่ยน
.Range("b1" & LastRow & LastColumn).ClearContents เป็น
.Range("b1").Resize(lastrow, lastcolumn).ClearContents

ปรับแล้วลบข้อมูลได้ แต่ ลบไปถึง column AG ไม่สามารถลบไปไม่ถึง LastColumn AP ครับ

หากต้องการลบข้อมูลทั้งชีทให้ใช้
หรือหากต้องการลบเฉพาะเฉพาะช่วงข้อมูลที่เคยใช้งานให้ใช้
Code: Select all
ActiveSheet.UsedRange.ClearContents
ตัวอย่าง
Code: Select all
Dim answer As Long
With ActiveSheet
answer = MsgBox("Clear?", vbYesNo + vbQuestion, "data")
If answer = vbYes Then
.UsedRange.ClearContents
End If
End With

ขอบคุณครับ