Page 1 of 1
หลังจากที่ Clickปุ่ม Cal แล้ว อยากให้ผลลัพธ์ที่ต้องการ
Posted: Fri Jun 17, 2022 3:22 pm
by wisitsakbenz
เรียน อาจารย์
ที่ Sheet "AIA" หลังจากที่ Clickปุ่ม Cal แล้ว อยากให้ผลลัพธ์แสดงออกมาดัง Sheet "สิ่งที่อยากได้ Cholec"
1.และต้องการให้ ผลรวมมีค่าเท่ากับหัวข้อใหญ่ คือ 1-8 ที่ Highlight สีแดงครับ
2.ถ้ามีการเปลี่ยนชื่อ Cholec (235,000) ใน Sheet "Display" เป็น Unilateral (239,000) Clickปุ่ม Cal ที่ Sheet "AIA" จะแสดงตาม Sheet "สิ่งที่อยากได้ Unilateral"
ต้องปรับสูตรอย่างไรครับ
Code: Select all
Private Sub CommandButton1_Click()
Dim rFind As Range, rDataAll As Range
Dim r As Range, rTarget As Range
Dim ws4 As Worksheet, i As Integer
Set ws4 = Worksheets("AIA")
Set rFind = Sheets("Display").Range("I7")
Application.EnableEvents = False
ws4.Range("C12:F1000").ClearContents
If Sheets("Display").Range("I7") = "" Then Exit Sub
With Sheets("Data")
Worksheets("AIA").Range("C21").Resize(1000, 1).EntireRow.Delete
Set rDataAll = .Range("B1", .Range("B" & Rows.Count).End(xlUp))
If .Columns("B:B").Find(rFind, LookIn:=xlValues) Is Nothing Then
MsgBox ("ไม่มี Package นี้")
Exit Sub
End If
End With
i = 12
For Each r In rDataAll
If r = rFind Then
ws4.Range("d" & i).Resize(1, 2).Value = _
r.Offset(0, 1).Resize(1, 2).Value
i = i + 1
End If
Next r
Worksheets("AIA").Range("C49:D49").Value = "Total"
Worksheets("AIA").Range("E49:F49").Formula = "=Sum(R17C:R[-1]C)"
Worksheets("AIA").Range("D12").Resize(600, 1).EntireRow.Insert
With Sheets("AIA")
.Range("d" & i + 2, .Range("d" & i).End(xlDown).Offset(-1, 0)) _
.EntireRow.Delete
End With
Application.EnableEvents = True
' MsgBox "Get data has finished."
Set ws4 = Nothing
Set rFind = Nothing
Set rDataAll = Nothing
End Sub
Re: หลังจากที่ Clickปุ่ม Cal แล้ว อยากให้ผลลัพธ์ที่ต้องการ
Posted: Fri Jun 17, 2022 5:03 pm
by snasui
ตัวอย่างการปรับ Code ครับ
Code: Select all
Private Sub CommandButton1_Click()
Dim rFind As Range, rDataAll As Range
Dim r As Range, rTarget As Range
Dim ws4 As Worksheet, i As Integer
Set ws4 = Worksheets("AIA")
Set rFind = Sheets("Display").Range("I7")
Application.EnableEvents = False
ws4.Range("C12:F1000").ClearContents
If Sheets("Display").Range("I7") = "" Then Exit Sub
With Sheets("Data")
Worksheets("AIA").Range("C21").Resize(1000, 1).EntireRow.Delete
Set rDataAll = .Range("B1", .Range("B" & Rows.Count).End(xlUp))
If .Columns("B:B").Find(rFind, LookIn:=xlValues) Is Nothing Then
MsgBox ("äÁèÁÕ Package ¹Õé")
Exit Sub
End If
End With
i = 12
For Each r In rDataAll
If r = rFind Then
ws4.Range("d" & i).Resize(1, 2).Value = _
r.Offset(0, 1).Resize(1, 2).Value
If IsNumeric(VBA.Left(ws4.Range("d" & i), 1)) Then
ws4.Range("d" & i).Resize(1, 2).Font.Bold = True
ws4.Range("e" & i).Font.Color = vbRed
End If
i = i + 1
End If
Next r
' Worksheets("AIA").Range("C49:D49").Value = "Total"
'
' Worksheets("AIA").Range("E49:F49").Formula = "=Sum(R17C:R[-1]C)"
' Worksheets("AIA").Range("D12").Resize(600, 1).EntireRow.Insert
With Sheets("AIA")
.Range("c10:f10").Copy
.Range("d" & .Rows.Count).End(xlUp).Offset(3, -1).Resize(1, 4).PasteSpecial xlPasteFormats
Application.CutCopyMode = False
With .Range("D" & .Rows.Count).End(xlUp).Offset(3, 0)
.Offset(0, -1).Value = "Total"
.Offset(0, 1).Formula = "=Sumifs(R11C:R[-1]C,R11C[-1]:R[-1]C[-1],""*.*"")"
' .Range("D12").Resize(600, 1).EntireRow.Insert
' .Range("d" & i + 2, .Range("d" & i).End(xlDown).Offset(-1, 0)) _
.EntireRow.Delete
End With
.Range("e17", .Range("e" & .Rows.Count).End(xlUp)).NumberFormat = "#,##0"
With .Range("e17", .Range("e" & .Rows.Count).End(xlUp)).Offset(0, -2)
With .Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
With .Offset(0, 1).Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
With .Offset(0, 3).Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
End With
End With
Application.EnableEvents = True
' MsgBox "Get data has finished."
Set ws4 = Nothing
Set rFind = Nothing
Set rDataAll = Nothing
End Sub
Re: หลังจากที่ Clickปุ่ม Cal แล้ว อยากให้ผลลัพธ์ที่ต้องการ
Posted: Sat Jun 18, 2022 10:50 am
by wisitsakbenz
เรียน อาจารย์ snasui ครับ
ได้ผลตามต้องการครับ แต่อยากเพิ่มเติมคือ
1.Sheet "AIA" > Highlight สีตามหัวข้อ (ตัวอย่างตาม Sheet "สิงที่อยากได้ AIA")
2.Sheet "AIA-Detail"
- อยากให้แสดงผลรวม
- Highlight สีตามหัวข้อ
ดังตัวอย่าง Sheet "สิ่งที่อยากได้ AIADetail"
ต้องปรับ Code อย่างไรครับ ขอบคุณครับ
Code: Select all
With Sheets("AIA-Detail")
.Range("c10:g11").Copy
.Range("d" & .Rows.Count).End(xlUp).Offset(3, -1).Resize(1, 4).PasteSpecial xlPasteFormats
Application.CutCopyMode = False
With .Range("D" & .Rows.Count).End(xlUp).Offset(3, 0)
.Offset(0, -1).Value = "Total"
.Offset(0, 1).Formula = "=Sumifs(R11C:R[-1]C,R11C[-1]:R[-1]C[-1],""*.*"")"
.EntireRow.Delete
End With
Re: หลังจากที่ Clickปุ่ม Cal แล้ว อยากให้ผลลัพธ์ที่ต้องการ
Posted: Sat Jun 18, 2022 6:24 pm
by snasui
ตัวอย่างการปรับ Code ครับ
Code: Select all
Private Sub CommandButton1_Click()
Dim rFind As Range, rDataAll As Range
Dim r As Range, rTarget As Range
Dim ws4 As Worksheet, i As Integer
Set ws4 = Worksheets("AIA")
Set ws5 = Worksheets("AIA-Detail")
Set rFind = Sheets("Display").Range("I7")
Application.EnableEvents = False
ws4.Range("C12:F1000").ClearContents
ws5.Range("C13:k1000").ClearContents
If Sheets("Display").Range("I7") = "" Then Exit Sub
With Sheets("Data")
Worksheets("AIA").Range("C21").Resize(1000, 1).EntireRow.Delete
Set rDataAll = .Range("B1", .Range("B" & Rows.Count).End(xlUp))
If .Columns("B:B").Find(rFind, LookIn:=xlValues) Is Nothing Then
MsgBox ("äÁèÁÕ Package ¹Õé")
Exit Sub
End If
End With
i = 12
For Each r In rDataAll
If r = rFind Then
ws4.Range("d" & i).Resize(1, 2).Value = _
r.Offset(0, 1).Resize(1, 2).Value
If IsNumeric(VBA.Left(ws4.Range("d" & i), 1)) Then
ws4.Range("d" & i).Resize(1, 2).Font.Bold = True
ws4.Range("d" & i).Offset(0, -1).Resize(1, 4).Interior.Color = _
ws4.Range("c10").Interior.Color
' ws4.Range("e" & i).Font.Color = vbRed
End If
i = i + 1
End If
Next r
' Worksheets("AIA").Range("C49:D49").Value = "Total"
'
' Worksheets("AIA").Range("E49:F49").Formula = "=Sum(R17C:R[-1]C)"
' Worksheets("AIA").Range("D12").Resize(600, 1).EntireRow.Insert
With Sheets("AIA")
.Range("c10:f10").Copy
.Range("d" & .Rows.Count).End(xlUp).Offset(3, -1).Resize(1, 4).PasteSpecial xlPasteFormats
Application.CutCopyMode = False
With .Range("D" & .Rows.Count).End(xlUp).Offset(3, 0)
.Offset(0, -1).Value = "Total"
.Offset(0, 1).Formula = "=Sumifs(R11C:R[-1]C,R11C[-1]:R[-1]C[-1],""*.*"")"
' .Range("D12").Resize(600, 1).EntireRow.Insert
' .Range("d" & i + 2, .Range("d" & i).End(xlDown).Offset(-1, 0)) _
.EntireRow.Delete
End With
.Range("e17", .Range("e" & .Rows.Count).End(xlUp)).NumberFormat = "#,##0"
With .Range("e17", .Range("e" & .Rows.Count).End(xlUp)).Offset(0, -2)
With .Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
With .Offset(0, 1).Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
With .Offset(0, 3).Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
End With
End With
'Other Sheet
With Sheets("Datadetail")
Worksheets("AIA-Detail").Range("C21").Resize(1000, 1).EntireRow.Delete
Set rDataAll = .Range("B1", .Range("B" & Rows.Count).End(xlUp))
If .Columns("B:B").Find(rFind, LookIn:=xlValues) Is Nothing Then
MsgBox ("äÁèÁÕ Package ¹Õé")
Exit Sub
End If
End With
i = 13
For Each r In rDataAll
If r = rFind Then
ws5.Range("d" & i).Resize(1, 4).Value = _
r.Offset(0, 1).Resize(1, 4).Value
If IsNumeric(VBA.Left(ws5.Range("d" & i), 1)) Then
ws5.Range("d" & i).Resize(1, 4).Font.Bold = True
ws5.Range("d" & i).Offset(0, -1).Resize(1, 5).Interior.Color = _
ws5.Range("c10").Interior.Color
' ws4.Range("e" & i).Font.Color = vbRed
End If
i = i + 1
End If
Next r
With Sheets("AIA-Detail")
.Range("c10:g11").Copy
.Range("d" & .Rows.Count).End(xlUp).Offset(3, -1).Resize(1, 5).PasteSpecial xlPasteFormats
With .Range("d" & .Rows.Count).End(xlUp).Offset(3, -1)
.Resize(1, 5).PasteSpecial xlPasteFormats
.Offset(0, 1).UnMerge
With .Resize(1, 3)
.Merge
.Borders(xlEdgeRight).LineStyle = xlContinuous
.Borders(xlEdgeRight).Weight = xlMedium
.Offset(0, 1).Resize(1, 2).Merge
End With
End With
Application.CutCopyMode = False
With .Range("D" & .Rows.Count).End(xlUp).Offset(3, 0)
.Offset(0, -1).Value = "Total"
.Offset(0, 1).Formula = "=Sumifs(R11C:R[-1]C,R11C[-2]:R[-1]C[-2],""*.*"")"
' .EntireRow.Delete
End With
.Range("e11", .Range("f" & .Rows.Count).End(xlUp)).NumberFormat = "#,##0"
' .Range("f" & .Rows.Count).End(xlUp).NumberFormat = "#,##0"
With .Range("f17", .Range("f" & .Rows.Count).End(xlUp)).Offset(0, -3)
With .Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
With .Offset(0, 1).Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
With .Offset(0, 2).Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
With .Offset(0, 4).Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
End With
With .Range("f" & .Rows.Count).End(xlUp).Offset(0, -3).Resize(1, 5).Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
End With
Application.EnableEvents = True
' MsgBox "Get data has finished."
Set ws4 = Nothing
Set rFind = Nothing
Set rDataAll = Nothing
End Sub
Re: หลังจากที่ Clickปุ่ม Cal แล้ว อยากให้ผลลัพธ์ที่ต้องการ
Posted: Sat Jun 18, 2022 8:12 pm
by wisitsakbenz
เรียน อาจารย์ snasui
ได้แล้วครับ ขอบคุณอาจารย์มากเลยครับ
Re: หลังจากที่ Clickปุ่ม Cal แล้ว อยากให้ผลลัพธ์ที่ต้องการ
Posted: Mon Jun 20, 2022 9:44 am
by wisitsakbenz
เรียน อาจารย์ snasui
อยากสอบถามเพิ่มเติมครับ คือ
1. ถ้าใส่ --> Hernia Repair (380,000) ในช่อง I7 ของ Sheet "Display" แล้วคลิกปุ่ม Cal ใน sheet "AIA"
จะแสดงผลผิดพลาด คือ เส้นเกิน และมีสีเกินครับ (อยากให้แสดงผลดัง Sheet "สิ่งที่อยากได้ AIA" และ "สิ่งที่อยากได้ Datadetail"
2.ถ้ากลับไปใส่ Cholec (235,000) หรือ Unilateral (239,000) ในช่อง I7 ของ Sheet "Display" แล้วคลิกปุ่ม Cal ใน sheet "AIA"
Row ที่ 15 จะไม่แสดงค่า และมีการ Merge Cell ใส่สี ใส่เส้น
ต้องปรับ Code อย่างไรครับ ขอบคุณครับ
Re: หลังจากที่ Clickปุ่ม Cal แล้ว อยากให้ผลลัพธ์ที่ต้องการ
Posted: Mon Jun 20, 2022 10:02 am
by snasui
ได้เขียนปรับ Code มาเองแล้วหรือไม่ เขียนไว้ว่าอย่างไรครับ
Re: หลังจากที่ Clickปุ่ม Cal แล้ว อยากให้ผลลัพธ์ที่ต้องการ
Posted: Mon Jun 20, 2022 10:34 am
by wisitsakbenz
เรียน อาจารย์ snasui
ขอศึกษาก่อนนะครับ หากติดขัดจะสอบถามอีกครั้งครับ
ขอบคุณครับ
Re: หลังจากที่ Clickปุ่ม Cal แล้ว อยากให้ผลลัพธ์ที่ต้องการ
Posted: Mon Jun 20, 2022 10:36 am
by snasui
กรุณา Debug แล้วสังเกตมาเองว่าข้อมูลควรจะเริ่มกำหนดรูปแบบตั้งแต่บรรทัดไหน ใน Code กำหนดไว้ที่บรรทัดไหน กลับไปแก้บรรทัดนั้นให้ครอบคลุมในสิ่งที่ต้องการครับ
Re: หลังจากที่ Clickปุ่ม Cal แล้ว อยากให้ผลลัพธ์ที่ต้องการ
Posted: Mon Jun 20, 2022 10:38 am
by wisitsakbenz
เรียน อาจารย์ snasui
ขอศึกษาก่อนนะครับ หากติดขัดจะสอบถามอีกครั้งครับ
ขอบคุณครับ
Re: หลังจากที่ Clickปุ่ม Cal แล้ว อยากให้ผลลัพธ์ที่ต้องการ
Posted: Fri Jun 24, 2022 9:55 am
by wisitsakbenz
เรียน อาจารย์ snasui ครับ
อยากสอบถามเพิ่มเติมคือ
Sheet "AIA" >
- เส้นขาด
- อยากให้แสดงข้อความด้านล่างแสดง ต่อจาก "รวมราคาท้้งหมด"
หมายเหตุ : ราคาดังกล่าวไม่รวมค่าใช้จ่ายดังต่อไปนี้
* การรักษาโรคประจำตัว
* การรักษาภาวะแทรกซ้อน
* ค่ารักษา ค่าส่งตรวจ
ดังตัวอย่าง Sheet "สิ่งที่อยากได้"
ต้องปรับ Code อย่างไรครับ ขอบคุณครับ
Code: Select all
With Sheets("AIA")
.Range("c10:f10").Copy
.Range("d" & .Rows.Count).End(xlUp).Offset(3, -1).Resize(1, 4).PasteSpecial xlPasteFormats
Application.CutCopyMode = False
With .Range("D" & .Rows.Count).End(xlUp).Offset(3, 0)
.Offset(0, -1).Value = "รวมราคาท้้งหมด " & ws4.Range("L11").Value & " บาท"
End With
With .Range("d12", .Range("d" & .Rows.Count).End(xlUp)).Offset(0, -1)
With .Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
With .Offset(0, 3).Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
End With
End With
Re: หลังจากที่ Clickปุ่ม Cal แล้ว อยากให้ผลลัพธ์ที่ต้องการ
Posted: Fri Jun 24, 2022 11:17 am
by snasui
ตัวอย่างการปรับ Code ครับ
Code: Select all
'Other code
'With .Range("d12", .Range("d" & .Rows.Count).End(xlUp)).Offset(0, -1)
With .Range("c12", .Range("c" & .Rows.Count).End(xlUp))
With .Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
With .Offset(0, 3).Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
End With
End With
With .Range("c" & .Rows.Count).End(xlUp)
.Offset(2, 0).Value = "หมายเหตุ : ราคาดังกล่าวไม่รวมค่าใช้จ่ายดังต่อไปนี้"
.Offset(2, 0).Font.Bold = True
.Offset(3, 0).Value = "* การรักษาโรคประจำตัว"
.Offset(4, 0).Value = "* การรักษาภาวะแทรกซ้อน"
.Offset(5, 0).Value = "* ค่ารักษา ค่าส่งตรวจ"
End With
'Other code
สิ่งที่ต้องทำความเข้าใจและใช้ให้คล่องมีดังนี้ครับ
- การเยื้อง Code จะต้องปรับการเข้าคู่ให้เยื้องตรงกันแม้จะไม่มีผลต่อการทำงานของ Code แต่จะสะดวกต่อการอ่านและการ Debug ลักษณะการเยื้องที่ควรเป็น เช่น
Code: Select all
With
'xyz
End With
If
'xyz
End If
For x = 0 to 10
'xyz
Next x
- การหาตำแหน่งที่จะ Offset
- การ Merge เซลล์ ค่าที่คีย์ในเซลล์จะบรรจุอยู่ในเซลล์แรกของชุดเซลล์ที่ Merge และหากการ Merge อยู่บรรทัดสุดท้าย เมื่อจะอ้างอิงหาบรรทัดสุดท้ายของข้อมูลจะต้องใช้คอลัมน์ของเซลล์ดังกล่าว
- วิธีการตรวจสอบหาบรรทัดสุดท้ายของข้อมูลอย่างง่าย ๆ ให้คลิกไปยังเซลล์ว่างด้านล่างข้อมูล จากนั้นกดแป้น Ctrl ค้างไว้แล้วกดแป้นลูกศรชี้ขึ้น หาก Cursor ไม่หยุดยังเซลล์สุดท้ายที่มีข้อมูลแสดงว่าคอลัมน์นั้นใช้อ้างอิงหาค่าบรรทัดสุดท้ายของข้อมูลไม่ได้
Re: หลังจากที่ Clickปุ่ม Cal แล้ว อยากให้ผลลัพธ์ที่ต้องการ
Posted: Fri Jun 24, 2022 11:40 am
by wisitsakbenz
เรียน อาจารย์ snasui
ได้แล้วครับ ขอบคุณอาจารย์มากเลยครับ