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
ตัวอย่าง 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
สำหรับกรณีนี้ ต้องการใช้ VBA ในการจัดการตามที่ได้พยายามเขียน Code และแจ้งความต้องการมาตามทียกมาด้านล่างครับ
P1649 wrote:ตามที่แนะนำ ไม่ตรงความต้องการ คือ ต้องการใช้ VBA ลบช่องว่าง เช่น
I Love You ให้อยู่ในรูป ILoveYou
Re: ลบช่องว่างด้วย VBA
Posted: Thu Jun 27, 2013 6:42 pm
by P1649
snasui wrote: ตัวอย่าง 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
ลองปรับ 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
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
ตัวอย่างการปรับ 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
สิ่งที่ทำเพิ่มคือ
- ประกาศตัวแปร sh ให้เป็น Worksheet
- Loop ทุก sh ใน Workbook
- กำหนดค่าตัวแปร rAll ให้แต่ละชีตโดยขยายไปอีก 20 คอลัมน์