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]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)ติดใจครับsnasui wrote:ปกติ Procedure หนึ่ง ๆ เราจะเขียนเพื่องานใดงานหนึ่ง เพื่อลดความซับซ้อน ง่ายต่อการหาค่าผิดพลาดและทำการแก้ไขปรับปรุง หากต้องใช้พร้อมกันหลาย ๆ งานก็ค่อยเรียกใช้จาก Procedure อื่น ๆ ไม่ได้หมายความว่าเขียนหลาย Procedure แล้วจะต้องมีปุ่มสำหรับเรียกใช้ทุก Procedure ครับ
Code: Select all
Application.ScreenUpdating = True
Code: Select all
Application.ScreenUpdating = False
Code: Select all
Application.ScreenUpdating = True
สวัสดีครับอาจารย์ ตามไปดูมาแล้วครับ ไม่ทราบว่าแปดบรรทัดตรงไหนครับsnasui wrote:ดู 8 บรรทัดแรกของ Link ด้านล่างนี้ได้เลยครับ
Code: Select all
Private Sub CommandButton1_Click()
Dim wx As Variant
'On Error Resume Next
Application.ScreenUpdating = False
Set wx = Workbooks.Open("C:\Program Files\DumP\DATA\doc\" & ComboBox1 & ".doc", True, True)
wx.PrintOut
wx.Close False
Application.ScreenUpdating = True
'If Err > 0 Then
'MsgBox "Notfound Doc"
'End If
End Sub
คลิก Link ที่ผมให้ไป รอจนโหลดเสร็จแล้วจับหน้าจอมาให้ดูหน่อยครับ อยากทราบเหมือนกันว่าที่บอกว่าไม่เห็นนั้นมันกลายเป็นหน้าไหน และจะเป็นหน้านั้นไปได้อย่างไรBafnet wrote:snasui เขียน:
ดู 8 บรรทัดแรกของ Link ด้านล่างนี้ได้เลยครับ
สวัสดีครับอาจารย์ ตามไปดูมาแล้วครับ ไม่ทราบว่าแปดบรรทัดตรงไหนครับ
ผมอ่านตั้งแต่เริ่มต้นถึงหน้าสุดท้าย
ไม่เห็นประเด็นที่ต้องการครับ
snasui wrote:viewtopic.php?p=8704#p8704
Code: Select all
Sub OpenWordPrintAndClose()
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Set wdApp = New Word.Application
wdApp.Visible = True
Set wdDoc = wdApp.Documents.Open("D:\Test.docx")
wdApp.PrintOut
wdApp.Quit
Set wdApp = Nothing
End Sub
ไม่ต้องกังวลครับ ไม่มีเหตุผลใดที่ต้องโกรธครับ ผมแค่อยากทราบว่า Link มันทำงานถูกต้องหรือเปล่า เกรงว่าจะเป็นปัญหาที่ Forum น่ะครับ แต่เมื่อพบว่าปกติดีก็โล่งใจครับBafnet wrote:ขอบคุณครับอาจารย์
ต้องขออภัยในความไม่รู้ของผมครับ
กลัวอาจารย์โกรธครับ
ลองใช้การ Minimize ดูครับBafnet wrote:1.งานตกแต่ง ผมสั่งซ่อนชีททั้งหมดเหลือไว้แผ่นเดียว ไม่แสดงเส้นตารางดูว่างเปล่า
แต่อยากให้พื้นเซลของชีทนั้น มีลักษณะโปร่ง ทำได้ไหมครับ แต่เครื่องมืออื่นยังอยู่นะครับ
Code: Select all
ActiveWindow.WindowState = xlMinimized
ลองใช้คำสั่งด้านล่างครับBafnet wrote: 2. ฟังก์ชั่นสุดท้ายที่อยากให้โปรแกรมมี ขอให้ช่วยแนะนำหน่อยครับ มีปุ่มคำสั่งบนUserForm คลิ๊กแล้วเปิด URL ของเว็บที่กำหนดไว้ ให้LinK ไปที่เว็บนั้น
http://lotusnotes02/handbook/main.nsf
Code: Select all
Application.ThisWorkbook.FollowHyperlink "http://lotusnotes02/handbook/main.nsf"
Code: Select all
Sheets("FileC").Activate
r = 2
Do Until Sheet10.Cells(r, 1).Value = ""
If Sheet10.Cells(r, 4).Value = 0 And Sheet10.Cells(r,2) And Sheet10.Cells(r,3) Then
......'คำสั่งที่ลบแถวCells(r, 4)ทั้งแถว
r = r + 1
frmlone.TextBox1.Value = Sheet9.Range("AB1").Value'ที่ตำแหน่งนี้มีการคำนวณเปอร์เซ็น
DoEvents
Loop
Code: Select all
frmlone.TextBox1.Value = Sheet9.Range("AB1").Value
Code: Select all
frmlone.TextBox1.Value = Sheet9.Range("AB1").Value'ที่ตำแหน่งนี้มีการคำนวณเปอร์เซ็น
DoEvents
Code: Select all
Dim rAll As Range
Dim r As Range
With Worksheets("Sheet2")
Set rAll = .Range("B2", .Range("B" & Rows.Count).End(xlUp))
End With
For Each r In rAll
If r = 0 And r.Offset(0, 1) = 0 And r.Offset(0, 2) = 0 Then
r = ""
End If
frmlone.TextBox1.Value = Sheet9.Range("AB1").Value'ลองเพิ่มเข้าไป
Next r
On Error Resume Next
rAll.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
Code: Select all
Sub Sed()
Dim r As Integer
Sheets("Sheet2").Activate
r = 2
Do Until Sheet2.Cells(r, 1).Value = ""
If Sheet2.Cells(r, 5).Value = 0 Then
Sheet2.Rows(r).Select
Selection.Delete Shift:=xlUp
End If
r = r + 1
UserForm1.TextBox1.Value = Sheet2.Range("AB1").Value
DoEvents
Loop
End Sub
Code: Select all
Sub Sed()
Dim r As Integer
With Worksheets("Sheet2")
.Activate
r = .Range("A1").End(xlDown).Row
Do Until r = 1
If .Cells(r, 5).Value = 0 Then
.Cells(r, 5).EntireRow.Delete
End If
r = r - 1
UserForm1.TextBox1.Value = .Range("AB1").Value
DoEvents
Loop
End With
End Sub
Code: Select all
Sub a
Dim r As interger
Dim n As interger
With Worksheets("Sheet2")
.Activate
r = 2
n = Sheet2.Range("AC1").value
Do Until Sheet10.Cells(r, 1).Value = ""
Sheet10.Cells(r, 6).Formula = "=VLOOKUP(" & Sheet10.Cells(r, 1).Address & ",FileB!A1:T(n),3,0)"
Sheet10.Cells(r, 7).Formula = "=VLOOKUP(" & Sheet10.Cells(r, 6).Address & ",FileA!A1:G(n),5,0)"
Sheet10.Cells(r, 8).Formula = "=VLOOKUP(" & Sheet10.Cells(r, 6) & ",FileA!A1:G(n),7,0)"
Sheet10.Cells(r, 9).Formula = "=VLOOKUP(" & Sheet10.Cells(r, 1) & ",FileB!A1:T(n),17,0)"
Sheet10.Cells(r, 23).Formula = "=VLOOKUP(" & Sheet10.Cells(r, 6) & ",FileA1!A1:G(n),3,0)"
TextBox7.Value = Sheet10.Range("P1").Value
DoEvents
r = r + 1
LoopEnd With
End Sub
Code: Select all
"=VLOOKUP(" & Sheet10.Cells(r, 1).Address & ",FileB!A1:T(n),3,0)"
จาก Statement ด้านบน (n) จะทำงานไม่ได้ เนื่องจากไม่ถือว่าเป็นตัวแปร แต่กลายเป็นส่วนหนึ่งของ String ,FileB!A1:T(n),3,0)Bafnet wrote:"=VLOOKUP(" & Sheet10.Cells(r, 1).Address & ",FileB!A1:T(n),3,0)"
หากว่าในไฟล์มีฟังก์ชั่น Vlookup หรือพวก Volatile Function จำนวนมาก การลบบรรทัดย่อมช้าแน่นอนครับ เพราะจะเกิดการคำนวณทุก ๆ ครั้งที่มีการลบBafnet wrote:สวัสดีครับอาจารย์
วันนี้เป็นอะไรที่ไม่คืบหน้าเลยครับ
การแปลงข้อมูลช้าครับ ช้าตอนที่ลบ
เป็นเรื่องแปลกใจครั
Code: Select all
Application.Calculation = xlCalculationManual
Code: Select all
Application.Calculation = xlCalculationAutomatic
คิดว่าไม่มีผลครับBafnet wrote:ขนาดไฟล์โดยรวม หรือจำนวน Toolbox ที่อยู่บน UserForm มีผลหรือเปล่าครับ
การแปลงโดยใช้สูตรสามารถทำดังนี้ครับBafnet wrote:จะทำยังไงครับให้เป็นวันที่สิ้นเดือนของเดือนนั้น เช่น A1 = 55, B1 = 6