EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)Code: Select all
Sub BOQ()
Dim sh As Worksheet
With Sheets("หน้าหลัก")
If .Range("c44").Value <> "" Then
MsgBox "ช่องบันทึกรายการสินค้าเต็ม ไม่สามารถเพิ่มรายการได้"
Exit Sub
End If
End With
Worksheets("BOQ").Range("A12:F29").ClearContents
For Each sh In Worksheets
With Worksheets("BOQ")
.Range("B12").Offset(Application.CountA(.Range("B12:B" & .Rows.Count)), 0).Value = sh.Range("B13").Offset(Application.CountA(.Range("B13:B" & .Rows.Count)), 0).Value
.Range("D12").Offset(Application.CountA(.Range("D12:D" & .Rows.Count)), 0).Value = sh.Range("C13").Offset(Application.CountA(.Range("C13:C" & .Rows.Count)), 0).Value
.Range("E12").Offset(Application.CountA(.Range("E12:E" & .Rows.Count)), 0).Value = sh.Range("D13").Offset(Application.CountA(.Range("D13:D" & .Rows.Count)), 0).Value
.Range("F12").Offset(Application.CountA(.Range("F12:F" & .Rows.Count)), 0).Value = sh.Range("E13").Offset(Application.CountA(.Range("E13:E" & .Rows.Count)), 0).Value
End With
Next sh
MsgBox "Sent To BOQ Complete"
End Sub
Code: Select all
Sub BOQ()
Dim sh As Worksheet, rw As Long
With Sheets("หน้าหลัก")
rw = .Range("b13", .Range("b13").End(xlDown)).Rows.Count
If .Range("c44").Value <> "" Then
MsgBox "ช่องบันทึกรายการสินค้าเต็ม ไม่สามารถเพิ่มรายการได้"
Exit Sub
End If
End With
' Worksheets("BOQ").Range("A12:F29").ClearContents
' For Each sh In Worksheets
With Worksheets("BOQ")
.Range("a12:f29").ClearContents
' .Range("B12").Offset(Application.CountA(.Range("B12:B" & .Rows.Count)), 0).Value = sh.Range("B13").Offset(Application.CountA(.Range("B13:B" & .Rows.Count)), 0).Value
' .Range("D12").Offset(Application.CountA(.Range("D12:D" & .Rows.Count)), 0).Value = sh.Range("C13").Offset(Application.CountA(.Range("C13:C" & .Rows.Count)), 0).Value
' .Range("E12").Offset(Application.CountA(.Range("E12:E" & .Rows.Count)), 0).Value = sh.Range("D13").Offset(Application.CountA(.Range("D13:D" & .Rows.Count)), 0).Value
' .Range("F12").Offset(Application.CountA(.Range("F12:F" & .Rows.Count)), 0).Value = sh.Range("E13").Offset(Application.CountA(.Range("E13:E" & .Rows.Count)), 0).Value
.Range("a12").Resize(rw).Value = Worksheets("หน้าหลัก").Range("a13").Resize(rw).Value
.Range("b12").Resize(rw).Value = Worksheets("หน้าหลัก").Range("b13").Resize(rw).Value
.Range("d12").Resize(rw).Value = Worksheets("หน้าหลัก").Range("c13").Resize(rw).Value
.Range("e12").Resize(rw).Value = Worksheets("หน้าหลัก").Range("d13").Resize(rw).Value
.Range("f12").Resize(rw).Value = Worksheets("หน้าหลัก").Range("e13").Resize(rw).Value
End With
' Next sh
MsgBox "Sent To BOQ Complete"
End Sub
Code: Select all
' ลบข้อความ และทำเส้นขอบให้เป็นสีขาว
.Range("a12:f43").ClearContents
.Range("a12", Range("a12").End(xlDown)).Borders(xlEdgeLeft).TintAndShade = 0
.Range("a12", Range("a12").End(xlDown)).Borders(xlEdgeRight).TintAndShade = 0
.Range("c12", Range("c12").End(xlDown)).Borders(xlEdgeRight).TintAndShade = 0
.Range("d12", Range("d12").End(xlDown)).Borders(xlEdgeRight).TintAndShade = 0
.Range("e12", Range("e12").End(xlDown)).Borders(xlEdgeRight).TintAndShade = 0
.Range("f12", Range("f12").End(xlDown)).Borders(xlEdgeRight).TintAndShade = 0
.Range("a12", Range("a12").End(xlDown)).Borders(xlEdgeBottom).TintAndShade = 0
.Range("b12", Range("b12").End(xlDown)).Borders(xlEdgeBottom).TintAndShade = 0
.Range("c12", Range("c12").End(xlDown)).Borders(xlEdgeBottom).TintAndShade = 0
.Range("d12", Range("d12").End(xlDown)).Borders(xlEdgeBottom).TintAndShade = 0
.Range("e12", Range("e12").End(xlDown)).Borders(xlEdgeBottom).TintAndShade = 0
.Range("f12", Range("f12").End(xlDown)).Borders(xlEdgeBottom).TintAndShade = 0
Code: Select all
' เติมเส้นขอบสี เป็นกรอบสีเหลี่ยมในแต่ละเซลล์
.Range("a12", Range("a12").End(xlDown)).Borders(xlEdgeTop).TintAndShade = -0.14996795556505
.Range("a12", Range("a12").End(xlDown)).Borders(xlEdgeBottom).TintAndShade = -0.14996795556505
.Range("a12", Range("a12").End(xlDown)).Borders(xlEdgeRight).TintAndShade = -0.14996795556505
.Range("a12", Range("a12").End(xlDown)).Borders(xlEdgeLeft).TintAndShade = -0.14996795556505
.Range("b12", Range("b12").End(xlDown)).Borders(xlEdgeTop).TintAndShade = -0.14996795556505
.Range("b12", Range("b12").End(xlDown)).Borders(xlEdgeBottom).TintAndShade = -0.14996795556505
.Range("b12", Range("b12").End(xlDown)).Borders(xlEdgeRight).TintAndShade = -0.14996795556505
.Range("b12", Range("b12").End(xlDown)).Borders(xlEdgeLeft).TintAndShade = -0.14996795556505
.Range("d12", Range("d12").End(xlDown)).Borders(xlEdgeTop).TintAndShade = -0.14996795556505
.Range("d12", Range("d12").End(xlDown)).Borders(xlEdgeBottom).TintAndShade = -0.14996795556505
.Range("d12", Range("d12").End(xlDown)).Borders(xlEdgeRight).TintAndShade = -0.14996795556505
.Range("d12", Range("d12").End(xlDown)).Borders(xlEdgeLeft).TintAndShade = -0.14996795556505
.Range("e12", Range("e12").End(xlDown)).Borders(xlEdgeTop).TintAndShade = -0.14996795556505
.Range("e12", Range("e12").End(xlDown)).Borders(xlEdgeBottom).TintAndShade = -0.14996795556505
.Range("e12", Range("e12").End(xlDown)).Borders(xlEdgeRight).TintAndShade = -0.14996795556505
.Range("e12", Range("e12").End(xlDown)).Borders(xlEdgeLeft).TintAndShade = -0.14996795556505
.Range("f12", Range("f12").End(xlDown)).Borders(xlEdgeTop).TintAndShade = -0.14996795556505
.Range("f12", Range("f12").End(xlDown)).Borders(xlEdgeBottom).TintAndShade = -0.14996795556505
.Range("f12", Range("f12").End(xlDown)).Borders(xlEdgeRight).TintAndShade = -0.14996795556505
.Range("f12", Range("f12").End(xlDown)).Borders(xlEdgeLeft).TintAndShade = -0.14996795556505
Code: Select all
Sub BOQ()
Dim sh As Worksheet, rw As Long
Dim r As Range
Application.ScreenUpdating = False
With Sheets("หน้าหลัก")
rw = .Range("b13", .Range("b13").End(xlDown)).Rows.Count
If .Range("c44").Value <> "" Then
MsgBox "ช่องบันทึกรายการสินค้าเต็ม ไม่สามารถเพิ่มรายการได้"
Exit Sub
End If
End With
With Worksheets("BOQ")
' ลบข้อความ และทำเส้นขอบให้เป็นสีขาว
.Range("a12:f43").ClearContents
' .Range("a12", Range("a12").End(xlDown)).Borders(xlEdgeLeft).TintAndShade = 0
' .Range("a12", Range("a12").End(xlDown)).Borders(xlEdgeRight).TintAndShade = 0
' .Range("c12", Range("c12").End(xlDown)).Borders(xlEdgeRight).TintAndShade = 0
' .Range("d12", Range("d12").End(xlDown)).Borders(xlEdgeRight).TintAndShade = 0
' .Range("e12", Range("e12").End(xlDown)).Borders(xlEdgeRight).TintAndShade = 0
' .Range("f12", Range("f12").End(xlDown)).Borders(xlEdgeRight).TintAndShade = 0
' .Range("a12", Range("a12").End(xlDown)).Borders(xlEdgeBottom).TintAndShade = 0
' .Range("b12", Range("b12").End(xlDown)).Borders(xlEdgeBottom).TintAndShade = 0
' .Range("c12", Range("c12").End(xlDown)).Borders(xlEdgeBottom).TintAndShade = 0
' .Range("d12", Range("d12").End(xlDown)).Borders(xlEdgeBottom).TintAndShade = 0
' .Range("e12", Range("e12").End(xlDown)).Borders(xlEdgeBottom).TintAndShade = 0
' .Range("f12", Range("f12").End(xlDown)).Borders(xlEdgeBottom).TintAndShade = 0
'
.Range("a12").Resize(rw).Value = Worksheets("หน้าหลัก").Range("a13").Resize(rw).Value
.Range("b12").Resize(rw).Value = Worksheets("หน้าหลัก").Range("b13").Resize(rw).Value
.Range("d12").Resize(rw).Value = Worksheets("หน้าหลัก").Range("c13").Resize(rw).Value
.Range("e12").Resize(rw).Value = Worksheets("หน้าหลัก").Range("d13").Resize(rw).Value
.Range("f12").Resize(rw).Value = Worksheets("หน้าหลัก").Range("e13").Resize(rw).Value
For Each r In .Range("a12:f12").Resize(rw)
r.Borders(xlEdgeTop).TintAndShade = -0.14996795556505
r.Borders(xlEdgeBottom).TintAndShade = -0.14996795556505
r.Borders(xlEdgeRight).TintAndShade = -0.14996795556505
r.Borders(xlEdgeLeft).TintAndShade = -0.14996795556505
Next r
' เติมเส้นขอบให้เป็นสีเป็นกรอบสีเหลี่ยมในแต่ละเซลล์
' .Range("a12", Range("a12").End(xlDown)).Borders(xlEdgeTop).TintAndShade = -0.14996795556505
' .Range("a12", Range("a12").End(xlDown)).Borders(xlEdgeBottom).TintAndShade = -0.14996795556505
' .Range("a12", Range("a12").End(xlDown)).Borders(xlEdgeRight).TintAndShade = -0.14996795556505
' .Range("a12", Range("a12").End(xlDown)).Borders(xlEdgeLeft).TintAndShade = -0.14996795556505
'
' .Range("b12", Range("b12").End(xlDown)).Borders(xlEdgeTop).TintAndShade = -0.14996795556505
' .Range("b12", Range("b12").End(xlDown)).Borders(xlEdgeBottom).TintAndShade = -0.14996795556505
' .Range("b12", Range("b12").End(xlDown)).Borders(xlEdgeRight).TintAndShade = -0.14996795556505
' .Range("b12", Range("b12").End(xlDown)).Borders(xlEdgeLeft).TintAndShade = -0.14996795556505
'
' .Range("d12", Range("d12").End(xlDown)).Borders(xlEdgeTop).TintAndShade = -0.14996795556505
' .Range("d12", Range("d12").End(xlDown)).Borders(xlEdgeBottom).TintAndShade = -0.14996795556505
' .Range("d12", Range("d12").End(xlDown)).Borders(xlEdgeRight).TintAndShade = -0.14996795556505
' .Range("d12", Range("d12").End(xlDown)).Borders(xlEdgeLeft).TintAndShade = -0.14996795556505
'
' .Range("e12", Range("e12").End(xlDown)).Borders(xlEdgeTop).TintAndShade = -0.14996795556505
' .Range("e12", Range("e12").End(xlDown)).Borders(xlEdgeBottom).TintAndShade = -0.14996795556505
' .Range("e12", Range("e12").End(xlDown)).Borders(xlEdgeRight).TintAndShade = -0.14996795556505
' .Range("e12", Range("e12").End(xlDown)).Borders(xlEdgeLeft).TintAndShade = -0.14996795556505
'
' .Range("f12", Range("f12").End(xlDown)).Borders(xlEdgeTop).TintAndShade = -0.14996795556505
' .Range("f12", Range("f12").End(xlDown)).Borders(xlEdgeBottom).TintAndShade = -0.14996795556505
' .Range("f12", Range("f12").End(xlDown)).Borders(xlEdgeRight).TintAndShade = -0.14996795556505
' .Range("f12", Range("f12").End(xlDown)).Borders(xlEdgeLeft).TintAndShade = -0.14996795556505
Application.ScreenUpdating = True
MsgBox "Sent To BOQ Complete"
.Select
End With
End Sub
Resize
ให้หน่อยครับCode: Select all
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address = Range("C13").Address Then
If range("C13").Value = "" Then
UserForm1.Show
Cancel = True
End If
End If
If Target.Address = Range("C14").Address Then
If Range("C14").Value = "" Then
UserForm1.Show
Cancel = True
End If
End If
If Target.Address = Range("C15").Address Then
If Range("C15").Value = "" Then
UserForm1.Show
Cancel = True
End If
End If
End Sub
เป็นการขยายขอบเขตข้อมูล ใน Resize จะต้องระบุจำนวนบรรทัดหรือคอลัมน์ เช่นkio2002 wrote: Fri Sep 30, 2022 4:52 pm ผมรบกวนอาจารย์อธิบายเรื่องการใช้ Resize ให้หน่อยครับ
ถ้าตามที่ผมเข้าใจ จะนำมาใช้ในกรณีที่เซลล์ต้นทาง หรือปลายทางมีการผสานเซลล์ใช่ไหมครับ
.Resize(5,2)
แปลว่าขยายไป 5 บรรทัด 2 คอลัมน์, .Resize(,8)
หมายถึงขยายไป 8 คอลัมน์ส่วนของเดิมมีกี่บรรทัดก็ใช้ตามนั้น, .Resize(10)
แปลว่าขยายไป 10 บรรทัด (ไม่ได้ระบุคอลัมน์)กรณีไม่เกี่ยวข้องกับคำถามเดิมกรุณาตั้งกระทู้ใหม่ครับkio2002 wrote: Fri Sep 30, 2022 4:52 pm และก็ผมขอนุญาตใช้กระทู้นี้สอบถามเรื่องโค้ดอื่นเพิ่มเติมได้ไหมครับ หรือต้องตั้งกระทู้ใหม่
ได้ตั้งกระทู้ใหม่แล้วครับ ขอบคุณครับsnasui wrote: Fri Sep 30, 2022 7:58 pmเป็นการขยายขอบเขตข้อมูล ใน Resize จะต้องระบุจำนวนบรรทัดหรือคอลัมน์ เช่นkio2002 wrote: Fri Sep 30, 2022 4:52 pm ผมรบกวนอาจารย์อธิบายเรื่องการใช้ Resize ให้หน่อยครับ
ถ้าตามที่ผมเข้าใจ จะนำมาใช้ในกรณีที่เซลล์ต้นทาง หรือปลายทางมีการผสานเซลล์ใช่ไหมครับ.Resize(5,2)
แปลว่าขยายไป 5 บรรทัด 2 คอลัมน์,.Resize(,8)
หมายถึงขยายไป 8 คอลัมน์ส่วนของเดิมมีกี่บรรทัดก็ใช้ตามนั้น,.Resize(10)
แปลว่าขยายไป 10 บรรทัด (ไม่ได้ระบุคอลัมน์)
กรณีไม่เกี่ยวข้องกับคำถามเดิมกรุณาตั้งกระทู้ใหม่ครับkio2002 wrote: Fri Sep 30, 2022 4:52 pm และก็ผมขอนุญาตใช้กระทู้นี้สอบถามเรื่องโค้ดอื่นเพิ่มเติมได้ไหมครับ หรือต้องตั้งกระทู้ใหม่