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 HtmlSelect()
'Sheets("Sheet2").Range("A1") = Shapes.Range(Array("HTMLSelect1")).Value
Dim obj As Object, i As Integer, j As Integer
Dim a As Variant, b As Variant, c(0, 2) As Variant
With Sheets(1)
For Each obj In .Shapes
If Left(obj.Name, 4) = "HTML" Then
a = Split(obj.DrawingObject.Object.DisplayValues, ";")
b = Split(obj.DrawingObject.Object.Selected, ";")
i = Application.Match("True", b, 0) - 1
With Sheets("Sheet2")
If j = 0 Then
If .Range("a1") = "" Then
.Range("a1").Value = a(i)
Else
.Range("a" & .Rows.Count).End(xlUp).Offset(1, 0).Value = a(i)
End If
Else
c(0, j - 1) = a(i)
End If
End With
j = j + 1
End If
Next obj
With Sheets("sheet2")
.Range("a" & .Rows.Count).End(xlUp).Offset(1, 0).Resize(1, 3).Value = c
End With
End With
End Sub
Code: Select all
Sub HtmlSelect()
Dim obj As Object, i As Integer, j As Integer
Dim a As Variant, b As Variant, c(0, 2) As Variant
With Sheets(1)
For Each obj In .Shapes
If Left(obj.Name, 4) = "HTML" Then
a = Split(obj.DrawingObject.Object.DisplayValues, ";") '1 Display value if Data is value Q:What is ";"
b = Split(obj.DrawingObject.Object.Selected, ";") '2 Detect Object is Selected or Data value Q:What is .selected
i = Application.Match("True", b, 0) - 1 '3 Convert True to 0 false to 1 Q:Why match false not error
With Sheets("Sheet2")
If j = 0 Then '4 If J is unidentify represent to 0, right?
'If .Range("a1") = "" Then 'not use
.Range("a1").Value = a(i) '5 a is array in object 1, right
'Else
'.Range("a" & .Rows.Count).End(xlUp).Offset(1, 0).Value = a(i) 'not use
'End If
Else
c(0, j - 1) = a(i)
End If
End With
j = j + 1
End If
Next obj
With Sheets("sheet2")
.Range("a" & .Rows.Count).End(xlUp).Offset(1, 0).Resize(1, 3).Value = c
End With
End With
End Sub
DhitiBank wrote: นี่มัน object อะไรนั่น อาจารย์ครับ ถ้าจะหาคำอธิบายโค้ดเกี่ยวกับ object พวกนี้ ต้องหาอ่านจากไหนครับ
ขอบคุณครับ เอาเป็นว่าผมพยายามใช้ฟอร์มที่โปรแกรมให้มาแบบเดิมดีกว่า แค่นี้ผมก็คิดว่ายากมากแล้วนะsnasui wrote: เป็น Object ของ HTML ครับ กรณีนี้ผมเขียนโดยอาศัย Property Window, Locals Window มาช่วยแสดง Properties ของ Object เพื่อให้ทราบว่ามี Properties อะไร เป็น Data Type แบบใด และจะเขียนเพื่อดึงค่าออกมาแสดงได้อย่างไรครับ
ทุกตัวแปรประกาศตัวแปรไว้เรียบร้อยแล้วครับzern wrote:ขอกลับมาถามใหม่อีกรอบหน่อยครับ
1. If j = 0 Then
่j=0 เป็นการเช็คอะไรเหรอครับ เพราะผมไม่เจอการประกาศเลยว่า j คืออะไร เจอแต่ j as integer
2. c(0, j - 1) = a(i)
c(0, j - 1) มันคืออะไรเหรอครับ ผมไม่เจอการประกาศ c เช่นกัน เจอแต่ c(0, 2) as variant ไม่เข้าใจว่ามันมีความหมายยังไง
คือผมลองเพิ่ม object เข้าไปแล้วมัน debug น่ะครับ
ถ้าแก้สองโค้ดนี้ออกน่าจะเอาไปปรับใช้ในงานได้ ถึงแม้จะเขียนไม่ได้ แต่ก็พอจะแก้ไขเล็กๆน้อยๆได้น่ะครับ
0
""
เช่นนี้เป็นต้นอ๋อ ผมก็เดาว่า j น่าจะเริ่มที่ 0 เพราะวิเคราะห์จากผลลัพธ์ที่ได้ ถ้างั้น j ก็น่าจะเป็นแค่การเช็คว่าจะวนลูปกี่รอบหาก DataType เป็น Integer เช่นที่ผมโพสต์ไป แสดงว่ามีค่าตั้งต้นที่ 0
หาก DataType เป็น String ค่าเริ่มต้นจะเป็น "" เช่นนี้เป็นต้น