:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

มีปัญหาเรื่อง Application.OnTime อัพเดทซ้อนกันครับ(แนบไฟล์มา

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
MinkkungZ
Member
Member
Posts: 4
Joined: Sat May 11, 2013 5:50 pm

มีปัญหาเรื่อง Application.OnTime อัพเดทซ้อนกันครับ(แนบไฟล์มา

#1

Post by MinkkungZ »

:flw: :flw: คือตอนนี้ผมมีปัญหาเรื่องการ ใช้ Application.OnTime ครับ ผมได้ทำตัวจำลองการจับเวลาอัพเดทขึ้น Sheet ทีละบรรทัดครับ ในโค้ดจะให้อัพเดททีละบรรทัดทุก 5 วินาทีครับ แต่เมื่อมีการกด Stop หยุดการจับเวลา แล้วกดเริ่มจับเวลาใหม่ ลักษณะการจับเวลาไม่ได้เพิ่มทีละบรรทัดทุก 5 วินาทีครับ แต่กลับกลายเป็นว่าเพิ่มทีละ ครั้ง ละ 2-3 บรรทัด แล้วยิ่ง กด Start Stop Start Stop สลับกัน ค่าเวลาที่อัพเดททุกๆบรรทัดจะยิ่งเพี้ยนครับ ไม่ได้ขึ้นบรรทัดใหม่ทุก 5 วินาที ดั่งแต่แรก ช่วยตรวจสอบโค้ดที่ผมแนบมาในชีทด้วยครับ ว่าควรแก้ตรงไหนขอบคุณมากครับ :| :thup:
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: มีปัญหาเรื่อง Application.OnTime อัพเดทซ้อนกันครับ(แนบไฟ

#2

Post by snasui »

:D ลองปรับ Code ที่ CommandButton2 เป็นตามด้านล่างครับ

Code: Select all

Private Sub CommandButton2_Click()
    On Error Resume Next
    CommandButton1.Enabled = True
    continueTime = False
    Application.OnTime nextTime, "update", , False
End Sub
MinkkungZ
Member
Member
Posts: 4
Joined: Sat May 11, 2013 5:50 pm

Re: มีปัญหาเรื่อง Application.OnTime อัพเดทซ้อนกันครับ(แนบไฟ

#3

Post by MinkkungZ »

ขอบคุณมากๆครับ อาจารย์ ตอนนี้ไม่มีปัญหาแล้วครับ ผมนำการเขียนนี้ไปประยุกต์ใช้กับ มิเตอร์ วัดค่าอัตโนมัติหนะครับเวลาเราหยุด Monitor แล้วจะ Monitor ต่อ ค่าที่ได้จะไม่ตรงตามที่เราต้องการ ช่วยได้มากเลยครับขอบพระคุณครับ :thup: :D :cp:
MinkkungZ
Member
Member
Posts: 4
Joined: Sat May 11, 2013 5:50 pm

Re: มีปัญหาเรื่อง Application.OnTime อัพเดทซ้อนกันครับ(แนบไฟ

#4

Post by MinkkungZ »

อาจารย์ครับ ปัญหามาอีกแล้วครับ ผมได้เพิ่มฟังก์ชั่น Combobox เพื่อเลือกช่วงนับเวลาลงไป และก็มี Tesxbox ใน Form เพื่อจับเวลาปกติ ขณะที่ผมทำแค่จับเวลาปกติยังไม่ได้นำ Textbox มาใช้งาน ค่านับเวลาที่ Sheet ปกติครับไม่ว่าจะเลือก 1,2, 3, 4, 5, 6 วินาที แล้ว Stop แล้วเริ่มใหม่ก็ปกติครับ แต่เมื่อ มีการใช้ Textbox ให้จับเวลาลงใน Form ค่าที่อ่านในชีท เมื่อกดนับเวลาแล้วหยุดแล้วกดใหม่ก็จะเพี้ยน เหมือนเดิมครับควรแก้ไขตรงไหนดีครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: มีปัญหาเรื่อง Application.OnTime อัพเดทซ้อนกันครับ(แนบไฟ

#5

Post by snasui »

:D ลองดูตัวอย่างการปรับ Code ตามด้านล่างครับ

ที่ CommandButton1 ปรับ Code เป็น

Code: Select all

Private Sub CommandButton1_Click()
    If ComboBox1.Text = "" Then Exit Sub
    CommandButton1.Enabled = False
    startTime = Now()
    ActiveSheet.Range(Cells(1, 1), Cells(200, 1)).Clear
    continueTime = True
    row = 1
    If ComboBox1.ListIndex = 0 Then
        AddTime = TimeValue("0:00:01")
    ElseIf ComboBox1.ListIndex = 1 Then
        AddTime = TimeValue("0:00:02")
    ElseIf ComboBox1.ListIndex = 2 Then
        AddTime = TimeValue("0:00:03")
    ElseIf ComboBox1.ListIndex = 3 Then
        AddTime = TimeValue("0:00:04")
    ElseIf ComboBox1.ListIndex = 4 Then
        AddTime = TimeValue("0:00:05")
    ElseIf ComboBox1.ListIndex = 5 Then
        AddTime = TimeValue("0:00:06")
    End If
    update0
End Sub
ที่ Module1 ปรับ Code เป็น

Code: Select all

Option Explicit

Public continueTime As Boolean
Public row As Long
Public nextTime As Date
Public startTime As Date
Public AddTime As Date

Sub update0()
    On Error Resume Next
    If continueTime Then
        nextTime = Now() + AddTime
        ActiveSheet.Cells(row, 1).Select
        Cells(row, 1).Value = Format$(Now() - startTime, "hh:nn:ss")
            row = row + 1
        Application.OnTime nextTime, "Update0"
    End If
End Sub
สังเกตว่าใช้ Procedure ที่ชื่อว่า Update0 เพียงตัวเดียวและใช้ AddTime เป็นตัวแปรให้รับค่าเวลามาจากที่กำหนดไว้ใน CommandButton1 แทนการใช้ Sub Procedure หลาย ๆ ตัว

ที่ CommandButton2 ปรับ Code เป็น

Code: Select all

Private Sub CommandButton2_Click()
    On Error Resume Next
    CommandButton1.Enabled = True
    continueTime = False
    Application.OnTime nextTime, "update0", , False
End Sub
MinkkungZ
Member
Member
Posts: 4
Joined: Sat May 11, 2013 5:50 pm

Re: มีปัญหาเรื่อง Application.OnTime อัพเดทซ้อนกันครับ(แนบไฟ

#6

Post by MinkkungZ »

แก้ไขแล้วครับ โปรแกรมสั้นมากเลยขอบคุณครับ และในส่วนของ Textbox1 หนะครับ ที่ผมเอาไว้ไว้จับเวลาในตัวฟอร์มหนะครับ สมมุติว่ามีการกดจับเวลาที่ 6 วินาที ครั้งแรก ขึ้นบรรทัดทุก 6 วินาทีครับ พอมีการ stop แล้ว start ใหม่ หรือ กด start stop สลับกันไปค่าก็กลับมาเพี้ยนครับ แต่เมื่อผมไม่ได้ใช้ textbox1 ค่าก็ปกติครับ ผมไม่สามารถใช้ Textbox ขึ้นบน Form ควบคู่ไปด้วยกันได้หรือครับ หรืออย่างไร
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: มีปัญหาเรื่อง Application.OnTime อัพเดทซ้อนกันครับ(แนบไฟ

#7

Post by snasui »

:D ลองปรับ Code เป็นตามด้านล่างครับ

Code ที่ UsererForm1

Code: Select all

Private Sub CommandButton1_Click()
    If ComboBox1.Text = "" Then Exit Sub
    CommandButton1.Enabled = False
    startTime = Now()
    startTime1 = Now()
    ActiveSheet.Range(Cells(1, 1), Cells(200, 1)).Clear
    continueTime = True
    row = 1
    If ComboBox1.ListIndex = 0 Then
        AddTime = TimeValue("00:00:01")
    ElseIf ComboBox1.ListIndex = 1 Then
        AddTime = TimeValue("00:00:02")
    ElseIf ComboBox1.ListIndex = 2 Then
        AddTime = TimeValue("00:00:03")
    ElseIf ComboBox1.ListIndex = 3 Then
        AddTime = TimeValue("00:00:04")
    ElseIf ComboBox1.ListIndex = 4 Then
        AddTime = TimeValue("00:00:05")
    ElseIf ComboBox1.ListIndex = 5 Then
        AddTime = TimeValue("00:00:06")
    End If
    Update0
    UpdateTime
End Sub

Private Sub CommandButton2_Click()
    On Error Resume Next
    CommandButton1.Enabled = True
    continueTime = False
    Application.OnTime nextTime, "Update0", , False
    Application.OnTime nextTime1, "UpdateTime", , False
End Sub

Private Sub CommandButton3_Click()
   Unload Me
End Sub

Private Sub UserForm_Activate()
    With UserForm1.ComboBox1
        .AddItem "1 sec", 0
        .AddItem "2 sec", 1
        .AddItem "3 sec", 2
        .AddItem "4 sec", 3
        .AddItem "5 sec", 4
        .AddItem "6 sec", 5
    End With
End Sub
Code ที่ Module1

Code: Select all

Option Explicit

Public continueTime As Boolean
Public row As Long
Public nextTime As Date
Public nextTime1 As Date
Public startTime As Date
Public startTime1 As Date
Public AddTime As Date

Sub Update0()
    On Error Resume Next
    If continueTime Then
        nextTime = Now() + AddTime
        ActiveSheet.Cells(row, 1).Select
        Cells(row, 1).Value = Format$(Now() - startTime, "hh:nn:ss")
        row = row + 1
        Application.OnTime nextTime, "Update0"
    End If
End Sub

Sub UpdateTime()
    On Error Resume Next
    If continueTime Then
        nextTime1 = Now() + TimeValue("00:00:01")
        UserForm1.TextBox1.Text = Format$(Now() - startTime1, "hh:nn:ss")
        Application.OnTime nextTime1, "UpdateTime"
    End If
End Sub
User avatar
monstersoza
Member
Member
Posts: 7
Joined: Mon Jan 20, 2014 6:40 pm

Re: มีปัญหาเรื่อง Application.OnTime อัพเดทซ้อนกันครับ(แนบไฟ

#8

Post by monstersoza »

:cp: คุณ MinkkungZ ผมเห็นว่าโปรแกรมของคุณมีประโยชน์ต่อผมมากๆผมขอพัฒนาต่อจากที่เขียนไว้ครับ :thup: แต่ตอนนี้ผมมีปัญหาเรื่องการคัดลอกข้อมูลที่เเรมด้อมมาไปสร้างกราฟใน Sheetใหม่ โดยผมทำการศึกษาต่อจากที่เขียนไว้ เเต่ผมมีปัญหาเรื่องการไม่เเสดงผลใน Sheet1 ซึ่งเเถวเเรกสุดจะทำการคัดลอกชื่อมาว่าเเล้วค่าที่เเรมด้อมจะมาเก็บไว้ในเเต่ละคอลัมน์ทุกๆ5วินาที เเละเราสมารถเพิ่มเเถวข้อมูลได้ตลอดเวลา ผมต้องเเก้ไขงานอย่างไรหรือครับ

ที่ได้ศึกษาก็จะมี :วิธีสั่งให้ VBA ทำงานทวนซ้ำหลายรอบ , Real time clock in excel worksheet, Excel to copy realtime data and create a chart out of it, มีปัญหาเรื่อง Application.OnTime อัพเดทซ้อนกันครับ, Excel VBA Combo Box
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: มีปัญหาเรื่อง Application.OnTime อัพเดทซ้อนกันครับ(แนบไฟ

#9

Post by snasui »

:D ที่มีปัญหาชื่อว่าอะไร ติดที่บันทัดใดครับ
User avatar
monstersoza
Member
Member
Posts: 7
Joined: Mon Jan 20, 2014 6:40 pm

Re: มีปัญหาเรื่อง Application.OnTime อัพเดทซ้อนกันครับ(แนบไฟ

#10

Post by monstersoza »

ขอโทษอาจารย์ snasui ครับที่อธิบายไม่ระเอียดพอ คือผมติดปัญหาที่การคัดลอกข้อมูลจาก Sheet powerex ไปยัง sheet1 ครับคือผมต้องการให้มันเก็บค่าคอลัมน์ name มาวางไว้ในเเถวเเรกของ sheet1 และเลื่อนไปทางซ้ายของเเถวเช่น ในSheet1 11CG อยู่ช่อง A1 12CG อยู่ช่อง A2 ที่คัดลอกมากจาก sheet powerex ครับและอีก1ปัญหาคือ ทุกๆทีข้อมูล value ใน sheet powerex เปลี่ยน (ค่าจะเเรมด้อม) ให้คัดลอกมาวางต่อจากชื่อใน Sheet1 ต่อจากคอลัมน์ ที่เป็นชื่อเนมของตัวเอง

ดังตัวอย่างนี้ครับ

Code: Select all

sheet PowerEx    
id	name	description	type	        value	       unit	      time	                staus
1	11CG	gas 01	     analog  	0.153381591	MW	4/4/2014 20:16	Good
2	12CG	gas 02	     analog	        0.823648765	MW	4/4/2014 20:17	Good

**คอลัม value ข้อมูลจะเเรมด้อม

sheet sheet1
         A                         B
11CG                        12CG
0.153381591            0.823648765
x  5 sec ผ่านไป             y  5 sec ผ่านไป
x  5 sec ผ่านไป             y  5  sec ผ่านไป
x  5 sec ผ่านไป             y  5 sec ผ่านไป

ประมาณนี้ครับคือสามารถเพิ่มข้อมูลใน sheet Powerex ได้ตลอดเเล้วสามารถเก็บข้อมูลลจากsheet Powerex  ลงใน sheet1 ได้ เเล้วทำตามรูปแบบตัวอย่างและสร้างกราฟเส้นดูค่าเปลี่ยนแปลงได้ใน sheet1 ได้ครับ
ส่วน code ที่มีปัญหามีดังนี้ครับ
code ที่ moudle 1

Code: Select all

Option Explicit

Public continueTime As Boolean
Public row As Long, ws1 As Long, wsPx As Long
Public column As Long
Public nextTime As Date
Public startTime As Date
Public AddTime As Date


Sub Update0()
    On Error Resume Next
    If continueTime Then
                nextTime = Now() + AddTime
        Do Until Selection.Value = ""
              Application.Calculate
              ws1.Value = Worksheets("Sheet1").Cells(row + 1, 1).End(xlUp).Offset(1, 0).Select
              wsPx.Value = Worksheets("PowerEx").Range("E" & Cells(row + 1, 5)).End(xlUp).Offset(1, 0).Select
              ws1.Value = wsPx.Value
        Loop
           row = row + 1
        Application.OnTime nextTime, "Update0"
    End If
End Sub


Sub UpdateTime()

    On Error Resume Next
    If continueTime Then

        nextTime = Now() + TimeValue("00:00:01")

        UserForm1.TextBox1.Text = Format$(Now() - startTime, "hh:nn:ss")
        Application.OnTime nextTime, "UpdateTime"

    End If

End Sub
code ที่ moudle2

Code: Select all

Dim row1 As Long
Sub CopyAuto()

    
    row1 = 1
    Do Until Selection.Value = "" 
          Worksheets("PowerEx").Select
          Range(Cells(row1, 2), Cells(row1, 2)).End(xlUp).Offset(1, 0).Select
          Selection.Copy
          Worksheets("Sheet1").Select
           Range(Cells(row1, 2), Cells(row1, 2)).End(xlToRight).Offset(0, 1).Select
          ActiveSheet.Paste
           row1 = row1 + 1
           Application.CutCopyMode = False
      Loop
      Application.OnTime nextTime, "CopyAuto"
End Sub
code ที่ UseForm1

Code: Select all

Private Sub CommandButton4_Click()
       Worksheets("Sheet1").Range("A" & Cells(Rows.Count, 1).End(xlUp).row + 1).Select
       ActiveSheet.Shapes.AddChart.Select
       ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$B$100")
      ActiveChart.ChartType = xlLineMarkers
End Sub
ถ้ามีส่วนใดที่ผิดอย่างไรช่วยเเนะนำด้วยนะครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: มีปัญหาเรื่อง Application.OnTime อัพเดทซ้อนกันครับ(แนบไฟ

#11

Post by snasui »

:D ให้ระบุ Code และบรรทัดที่เป็นปัญหามาเลยครับ ผู้ตอบจะได้เข้าถึงข้อมูลโดยไว ที่ยกทั้งหมดนั้นมีปัญหาทั้งหมดใช่หรือไม่ หรือมีปัญหาที่บรรทัดใด ระบุมาเฉพาะบรรทัดนั้นๆ ครับ

ยกตัวอย่างปัญหาแรกก่อนซึ่งเป็นการวางข้อมูล Code นั้นชื่อว่าอะไร ติดปัญหาที่บรรทัดใดครับ คำว่าติดปัญหาอาจจะหมายถึง ไม่วางข้อมูลให้ หรือ วางข้อมูลผิดที่ เช่นนี้เป็นต้น ค่อย ๆ แก้ปัญหาไปทีละเปลาะครับ

นอกจากนี้ควรแจ้งวิธีทดสอบว่าต้องคลิก เลือกข้อมูลใด ที่ไหน อย่างไร เป็นลำดับมาด้วยครับ
User avatar
monstersoza
Member
Member
Posts: 7
Joined: Mon Jan 20, 2014 6:40 pm

Re: มีปัญหาเรื่อง Application.OnTime อัพเดทซ้อนกันครับ(แนบไฟ

#12

Post by monstersoza »

:flw: คือที่กล่าวมาเป็นปัญหาทั้งหมดเลยนะครับ
1.ผมใส่วนลูปลงไป การคัดลอกที่ทำได้ไม่ทำงานต่อ
code ที่ moudle 1 ส่วน Update0

Code: Select all

 
Do Until Selection.Value = ""
              Application.Calculate
              ws1.Value = Worksheets("Sheet1").Cells(row + 1, 1).End(xlUp).Offset(1, 0).Select
              wsPx.Value = Worksheets("PowerEx").Range("E" & Cells(row + 1, 5)).End(xlUp).Offset(1, 0).Select
              ws1.Value = wsPx.Value
Loop
**ไม่มีการเเสดงผลใน sheet1

2.code ที่ moudle2 ก็เรื่องวนลูปในส่วนการคัดลอก name

Code: Select all

Do Until Selection.Value = "" 
          Worksheets("PowerEx").Select
          Range(Cells(row1, 2), Cells(row1, 2)).End(xlUp).Offset(1, 0).Select
          Selection.Copy
          Worksheets("Sheet1").Select
           Range(Cells(row1, 2), Cells(row1, 2)).End(xlToRight).Offset(0, 1).Select
          ActiveSheet.Paste
           row1 = row1 + 1
           Application.CutCopyMode = False
      Loop
*ไม่มีการเเสดงผลใน sheet1

3.เรื่องกราฟที่ต้องมีข้อมูลที่ได้จากการเก็บแบบreal time จาก sheet PowerEx มาใส่ลงใน sheet1 ซึ่งผมไม่รู้จะกำหนดขอบเขตของข้อมูลอย่างไร
ประมาณว่า ถ้า user1 เพิ่มข้อมูลใน sheet PowerEx มา 6 id ก็จะมาเเสดงผลที่ sheet1 คือ 6 คอลัมน์เเล้วก็เก็บข้อมูลเหมือนตัวอย่าง แต่ถ้า
user2 เพิ่มข้อมูลใน sheet PowerEx มา 2 id ก็จะมาเเสดงผลที่ sheet1 เเค่ 2 คอลัมน์เเล้วก็เก็บข้อมูลเหมือนตัวอย่าง ครับ

4.การใช้โปรแกรมก็คือ
4.1เปิดไฟล์ขึ้นมาเพิ่มข้อมูลในsheet PowerEx ว่าจะใช้กี่บรรทัดเเล้วเเต่ผู้ใช้ต้องการ
4.2ไป sheet1 กด show menu เลือกเวลาที่จะเก็บ >> กด start ข้อมูลก็จะทำการเก็บแบบ real time >> การ stop เมื่อต้องการข้อมูลเท่านี้แล้วแต่ user
>> กด make graph เพิ่อสร้างกราฟขึ้นมา (คือกราฟที่สร้างนี้จะนำไปใช้ในงานอื่นๆอีกเเล้วแต่งาน) >> ถ้าต้องการลบกราฟก็กด delete graph >> เมื่อเสร็จสุดก็จะทำการกด exit ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: มีปัญหาเรื่อง Application.OnTime อัพเดทซ้อนกันครับ(แนบไฟ

#13

Post by snasui »

:D ลองวางตัวอย่างคำตอบด้วย Manual มาที่ Sheet1 ด้วยครับ จะได้เห็นว่าข้อมูล name และ value ที่ต้องการให้วางนั้น เมื่อวางแล้วมีลักษณะเป็นอย่างไร จะได้เข้าใจตรงกัน
User avatar
monstersoza
Member
Member
Posts: 7
Joined: Mon Jan 20, 2014 6:40 pm

Re: มีปัญหาเรื่อง Application.OnTime อัพเดทซ้อนกันครับ(แนบไฟ

#14

Post by monstersoza »

ผมได้ทำการ Manual คำตอบที่ต้องการลงไปยังใน Sheet1 เเล้วครับ ตามที่แนบไฟล์ พร้อมกับอธิบายไว้เเล้วนะครับ :D ถ้ามีข้อแนะนำช่วยชี้เเนะด้วยนะครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: มีปัญหาเรื่อง Application.OnTime อัพเดทซ้อนกันครับ(แนบไฟ

#15

Post by snasui »

:D Code ควรจะ Run ให้ผ่านไปทีละ Code ก่อนครับ

สำหรับการ Copy ลองปรับเป็นตามด้านล่างครับ Run Code นี้ให้ผ่านก่อนแล้วค่อยถาม Code ต่อ ๆ ไป

Code: Select all

Dim h As Boolean

Sub CopyAuto()

' กำหนดคัดลอกวางออโต้ชื่อของเส้น
    If h = False Then
        Worksheets("PowerEx").Select
        Range("b2", Range("b" & Rows.Count).End(xlUp)).Copy
        Worksheets("Sheet1").Range("a1").PasteSpecial xlPasteValues, _
            Transpose:=True
        h = True
    End If
    Worksheets("PowerEx").Select
    Range("e2", Range("e" & Rows.Count).End(xlUp)).Copy
    Worksheets("Sheet1").Range("a" & Rows.Count).End(xlUp).Offset(1, 0) _
        .PasteSpecial xlPasteValues, Transpose:=True
    Application.CutCopyMode = False

'    row1 = 1 'row1 เก็บค่า1 ไว้
'    Do Until Selection.Value = ""  'สั่งให้ทวนจนกว่าจะเจอช่องว่าง
'          Range(Cells(row1, 2), Cells(row1, 2)).End(xlUp).Offset(1, 0).Select
'          Selection.Copy
'          Worksheets("Sheet1").Select
'           Range(Cells(row1, 2), Cells(row1, 2)).End(xlToRight).Offset(0, 1).Select
'          ActiveSheet.Paste
'           row1 = row1 + 1
'           Application.CutCopyMode = False
'      Loop
      Application.OnTime nextTime, "CopyAuto"
End Sub
User avatar
monstersoza
Member
Member
Posts: 7
Joined: Mon Jan 20, 2014 6:40 pm

Re: มีปัญหาเรื่อง Application.OnTime อัพเดทซ้อนกันครับ(แนบไฟ

#16

Post by monstersoza »

ขอบคุณมากๆครับ :cp: แต่ผมมีปัญหาอีกเรื่องครับคือพอเราสร้างกราฟจุดมาเเล้วข้อมูลกราฟที่สร้างมันเพี้ยนไปจากที่คิดไว้ คือเส้นกราฟไม่ใช่ชื่อของเส้นนั้นเเต่กลับเป็นชุดข้อมูล 1 2 3 เเทน เเต่จะเกิดขึ้นตอนข้อมูลที่เก็บนั้นน้อยกว่า5-6บรรทัด จะมีวิธีเเก้ไขปัญหานี้ได้หรือไม่ครับ หรือต้องเเจ้งให้ user ที่เก็บข้อมูลมากกว่านั้นจะได้เเก้ไขปัญหานี้แทนครับ :D แต่ user บางครั้งก็ใช้ข้อมูลไม่เท่ากันอยู่ดีครับ เลยต้องการหาทางเเก้ไข

code ที่ moudle2

Code: Select all

Sub MarkGraph()
'สร้างกราฟ
    On Error Resume Next
     Worksheets("Sheet1").Range("A" & Cells(Rows.Count, 1).End(xlUp).row + 1).Select
      ActiveSheet.Shapes.AddChart.Select
      ActiveChart.ChartType = xlLine   ' เปลี่ยนกราฟเส้น
      ActiveChart.SetSourceData Source:=Range("$A$1").Select
      Selection.End(xlUp).Select
      Selection.End(xlToLeft).Select
      Range(Selection, Selection.End(xlToRight)).Select
      Range(Selection, Selection.End(xlDown)).Select
'      ActiveChart.ChartType = xlLine      วางตรงนี้เเล้วเปลี่ยนการเป็นกราฟเส้นไม่ได้
End Sub
**เป็นไฟล์ Manual นะครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: มีปัญหาเรื่อง Application.OnTime อัพเดทซ้อนกันครับ(แนบไฟ

#17

Post by snasui »

:D ผมทดสอบแล้วไม่พบว่ามีปัญหาตามที่อธิบายมา ช่วยจับภาพตอบที่มีปัญหาแนบมาด้วยครับ
User avatar
monstersoza
Member
Member
Posts: 7
Joined: Mon Jan 20, 2014 6:40 pm

Re: มีปัญหาเรื่อง Application.OnTime อัพเดทซ้อนกันครับ(แนบไฟ

#18

Post by monstersoza »

:o ขออภัยครับผมลืมอัพรูปเป็นตัวอย่างให้ทราบ คือ ปัญหาทื่ผมเป็นกราฟเส้นตรงชื่อจะเป็นชุดข้อมูลที่ 1 เเต่ที่จริงต้องเป็นตามชื่อที่เราใส่ไว้ครับ

ปัญหาที่เกิดขึ้น (ผิดพลาด) คือชื่อเส้นเป็น ชุดข้อมูลที่ 1 2 3 4 5 ฯ ตามรูปด้านล่างครับ
p000040514 (Custom).jpg
สิ่งที่ต้องการให้เป็น (ถูกต้อง) คือ ชื่อเส้นจะเเสดง ตามเเถวที่หนึ่งโดนเรียงมาเป็นลำดับ ตามรูปด้านล่างครับ
p001040514 (Custom).jpg
**ทั้งนี้ผมเเค่เพิ่มข้อมูลเเค่1เเถวเท่านั้น ซึ่งเปลี่ยนจากรูปด้านบนเป็นรูปด้านล่างเลยทีเดียวครับ ช่วยชี้แนะด้วยครับ :D
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: มีปัญหาเรื่อง Application.OnTime อัพเดทซ้อนกันครับ(แนบไฟ

#19

Post by snasui »

:D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Sub MarkGraph()
'สร้างกราฟ
    With Sheets("Sheet1")
        .Range("A1").CurrentRegion.Activate
        .Shapes.AddChart.Select
        With ActiveChart
            .ChartType = xlLine
            .SetSourceData Range("a1").CurrentRegion, PlotBy:=xlColumns
        End With
    End With
End Sub
User avatar
monstersoza
Member
Member
Posts: 7
Joined: Mon Jan 20, 2014 6:40 pm

Re: มีปัญหาเรื่อง Application.OnTime อัพเดทซ้อนกันครับ(แนบไฟ

#20

Post by monstersoza »

ผมสามารถนำไปใช้ได้จริงๆเเล้วครับ :thup: ได้ผลดีมากต่อธุรกิจครับ จะพยายามศึกษาต่อไปนะครับ ขอบคุณมากๆครับ :cp:
Post Reply