Page 1 of 1

ลบข้อมูลที่ต้องการโดยใช้ vba เข้าช่วย

Posted: Thu Dec 04, 2014 1:07 pm
by Totem
:D เรียนอาจารย์และเพื่อนสมาชิก

ต้องการลบข้อมูล ก่อนลบมี 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
:D ตัวอย่างการปรับ 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::D ตัวอย่างการปรับ Code ตามด้านล่างครับ

เปลี่ยน .Range("b1" & LastRow & LastColumn).ClearContents เป็น .Range("b1").Resize(lastrow, lastcolumn).ClearContents
:D ปรับแล้วลบข้อมูลได้ แต่ ลบไปถึง 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
:D ขอบคุณครับ แต่ยัง 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 นะครับ
ยังไงคงต้องรอผู้รู้ท่านอื่นช่วยตอบแล้วครับ
:D ขอโทษครับ ผมลองใหม่แล้วใช้งานได้ตามต้องการครับ ขอบคุณครับ

Re: ลบข้อมูลที่ต้องการโดยใช้ vba เข้าช่วย

Posted: Fri Dec 05, 2014 8:20 am
by snasui
Totem wrote:
snasui wrote: :D ตัวอย่างการปรับ Code ตามด้านล่างครับ

เปลี่ยน .Range("b1" & LastRow & LastColumn).ClearContents เป็น .Range("b1").Resize(lastrow, lastcolumn).ClearContents
:D ปรับแล้วลบข้อมูลได้ แต่ ลบไปถึง column AG ไม่สามารถลบไปไม่ถึง LastColumn AP ครับ
:D หากต้องการลบข้อมูลทั้งชีทให้ใช้

Code: Select all

Cells.ClearContents
หรือหากต้องการลบเฉพาะเฉพาะช่วงข้อมูลที่เคยใช้งานให้ใช้

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: :D ตัวอย่างการปรับ Code ตามด้านล่างครับ

เปลี่ยน .Range("b1" & LastRow & LastColumn).ClearContents เป็น .Range("b1").Resize(lastrow, lastcolumn).ClearContents
:D ปรับแล้วลบข้อมูลได้ แต่ ลบไปถึง column AG ไม่สามารถลบไปไม่ถึง LastColumn AP ครับ
:D หากต้องการลบข้อมูลทั้งชีทให้ใช้

Code: Select all

Cells.ClearContents
หรือหากต้องการลบเฉพาะเฉพาะช่วงข้อมูลที่เคยใช้งานให้ใช้

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
:D ขอบคุณครับ