Page 1 of 1

ลบช่องว่างด้วย VBA

Posted: Wed Jun 26, 2013 11:42 pm
by P1649
ต้องการลบช่องว่างแต่ละเซล ใน Col D อาจารย์ช่วยแนะนำด้วยครับ

Code: Select all

  Sub Delete_Sp()
  Dim i As Long
  Dim j As Long
  Dim a As String
  i = 1   'start on first row
  Application.ScreenUpdating = False
  Do While i <= ActiveSheet.UsedRange.Rows.Count

    For j = i + 1 To ActiveSheet.UsedRange.Rows.Count
        
        'Cells(j, 4) = "=SUBSTITUTE(a1,"" "","""")"
        a = Cells(j, 4)
        a.Select
        SUBSTITUTE(a," ","")
    Exit For

    Next j
    i = i + 1
  Loop
  Application.ScreenUpdating = True
  
  End Sub


Re: ลบช่องว่างด้วย VBA

Posted: Wed Jun 26, 2013 11:49 pm
by nattasiray
ลองทำตามขั้นตอนนี้ก่อน (อย่าเพิ่งบันทึกแมโคร)

ใช้สูตร =TRIM(เซลล์ที่เก็บข้อมูล)

จากนั้นเลือกกลุ่มเซลล์
ใช้คำสั่ง Edit Replace
ที่ช่อง Find what เคาะ Spacebar 1 ครั้ง
คลิกปุ่ม Replace All

Re: ลบช่องว่างด้วย VBA

Posted: Thu Jun 27, 2013 12:13 am
by P1649
ตามที่แนะนำ ไม่ตรงความต้องการ คือ ต้องการใช้ VBA ลบช่องว่าง เช่น
I Love You ให้อยู่ในรูป ILoveYou

Re: ลบช่องว่างด้วย VBA

Posted: Thu Jun 27, 2013 6:49 am
by snasui
:D ตัวอย่าง Code การลบ Space ออกจากข้อความตามด้านล่างครับ

Code: Select all

Sub test()
    For Each r In ActiveSheet.UsedRange
        If r.Row > 1 Then r.Value = Replace(r, " ", "")
    Next r
End Sub

Re: ลบช่องว่างด้วย VBA

Posted: Thu Jun 27, 2013 11:13 am
by nattasiray
เลือกกลุ่มเซลล์
ใช้คำสั่ง Edit Replace
ที่ช่อง Find what เคาะ Spacebar 2 ครั้ง
คลิกปุ่ม Replace All

Re: ลบช่องว่างด้วย VBA

Posted: Thu Jun 27, 2013 11:34 am
by snasui
nattasiray wrote:เลือกกลุ่มเซลล์
ใช้คำสั่ง Edit Replace
ที่ช่อง Find what เคาะ Spacebar 2 ครั้ง
คลิกปุ่ม Replace All
:lol: สำหรับกรณีนี้ ต้องการใช้ VBA ในการจัดการตามที่ได้พยายามเขียน Code และแจ้งความต้องการมาตามทียกมาด้านล่างครับ :ard:
P1649 wrote:ตามที่แนะนำ ไม่ตรงความต้องการ คือ ต้องการใช้ VBA ลบช่องว่าง เช่น
I Love You ให้อยู่ในรูป ILoveYou

Re: ลบช่องว่างด้วย VBA

Posted: Thu Jun 27, 2013 6:42 pm
by P1649
snasui wrote::D ตัวอย่าง Code การลบ Space ออกจากข้อความตามด้านล่างครับ

Code: Select all

Sub test()
    For Each r In ActiveSheet.UsedRange
        If r.Row > 1 Then r.Value = Replace(r, " ", "")
    Next r
End Sub
ใช้งานได้ดี ขอบคุณมากครับ

Re: ลบช่องว่างด้วย VBA

Posted: Thu Jun 27, 2013 7:34 pm
by P1649

Code: Select all

Sub Delete_SP()
    'For Each r In ActiveSheet.UsedRange
    X = Workbooks("final.xlsm").Worksheets("Sheet7").Columns("B")
    X.UsedRange
    For Each r In X
     If r.Row > 1 Then r.Value = Replace(r, " ", "")
    Next r
End Sub
หากต้องการลบช่องว่างเฉพาะในเซล B2:B700 หรือ Col B ที่อาจมีข้อมูลเพิ่มเติมในอนาคต ต้องแก้ไขอย่างไรครับ

Re: ลบช่องว่างด้วย VBA

Posted: Thu Jun 27, 2013 7:42 pm
by snasui
:D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Sub Delete_SP()
    Dim rAll As Range, r As Range
    With Sheets("Sheet7")
        Set rAll = .Range("B2", _
            .Range("B" & Rows.Count).End(xlUp))
    End With
    For Each r In rAll
        r.Value = Replace(r, " ", "")
    Next r
End Sub

Re: ลบช่องว่างด้วย VBA

Posted: Thu Jun 27, 2013 9:55 pm
by P1649
ตรงตามที่ต้องการ ขอบคุณมากครับ

Re: ลบช่องว่างด้วย VBA

Posted: Sun Jul 07, 2013 8:17 am
by P1649

Code: Select all

Sub Delete_SP()
    Dim rAll As Range, r As Range
    With Sheets("Sheet14")
        Set rAll = .Range("k1", _
            .Range("k" & Rows.Count).End(xlUp))
            rAll.Select
    End With
    For Each r In rAll
        r.Select
 '       r.Value = Replace(r, " ", "")
        r.Value = Replace(r, "", "0")
 '       r.Value = Replace(r, "N.A.", "")
    Next r
    Call Sound_2
End Sub
Code อื่นใช้งานได้ ยกเว้น Replace(r, "", "0") ไม่แสดงผลอะไรเลยครับ
หากต้องการเปลี่ยนจาก string to "" หรือ string to 0 ต้องแก้ไขอย่างไรครับ

Re: ลบช่องว่างด้วย VBA

Posted: Sun Jul 07, 2013 8:30 am
by snasui
:lol:
P1649 wrote:Replace(r, "", "0")
ก็ควรไม่แสดงผลอะไรเลยครับเพราะปกติจะไม่เขียน Statement การเปลี่ยน String ที่แสดงค่าว่าง Byte เดี่ยวเป็นค่าอื่นมีแต่เปลี่ยนค่าอื่น ๆ มาเป็น String ที่แสดงค่าว่าง Byte เดี่ยว

Statement ที่ใช้ได้ควรเป็น Replace(r, " ", "0") เช่นนี้เป็นต้นครับ

Re: ลบช่องว่างด้วย VBA

Posted: Mon Sep 20, 2021 10:57 am
by aniwat2011
เรียน สอบถามอาจารย์ครับ
จากโค้ดนี้ถ้าต้องการลบในคอมลัมน์อื่นในชีทเดียวกันนี้ จะใส่โค้ดอย่างไรครับ และถ้าต้องการลบในชีทอื่นทำอย่างไรครับผม ขอบคุณครับ

Code: Select all

Sub Delete_SP()
    Dim rAll As Range, r As Range
    With Sheets("Sheet7")
        Set rAll = .Range("B2", _
            .Range("B" & Rows.Count).End(xlUp))
    End With
    For Each r In rAll
        r.Value = Replace(r, " ", "")
    Next r
End Sub

Re: ลบช่องว่างด้วย VBA

Posted: Mon Sep 20, 2021 6:59 pm
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Sub Delete_SP()
    Dim sh As Worksheet
    Dim rAll As Range, r As Range
    For Each sh In Worksheets
        With sh
            Set rAll = .Range("B2", _
                .Range("B" & Rows.Count).End(xlUp)).Resize(, 20)
        End With
        For Each r In rAll
            r.Value = Replace(r, " ", "")
        Next r
    Next sh
End Sub
สิ่งที่ทำเพิ่มคือ
  1. ประกาศตัวแปร sh ให้เป็น Worksheet
  2. Loop ทุก sh ใน Workbook
  3. กำหนดค่าตัวแปร rAll ให้แต่ละชีตโดยขยายไปอีก 20 คอลัมน์