Page 2 of 2

Re: การกำหนดตำแหน่งเคอร์เซอร์

Posted: Fri Feb 07, 2014 11:34 am
by suka
เรียนอาจารย์ค่ะ เกิดจากการใช้ Change Event ไม่ถูกน่ะค่ะ

ต้องการให้เปิดชีท Form แล้วเคอร์เซอร์ไปรอที่เซลล์ H1
และเมือมีการคีย์ที่เซลล์ H1 แล้วมีการ Enter แล้วให้เกิด Dropdown

นำ Code นี้ไปไว้ที่ Module ผลเหมือนไม่ทำงานค่ะ

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
      If Sheets("Form").Range("H1") <> "" Then
      End If
End Sub
พอนำ Code ด้านบนย้ายมาไว้ที่ชีท Form ใช้คู่กับ Code ด้านล่างก็ไม่ได้ผลค่ะ

Code: Select all

If Not Intersect(Target, Range("H1")) Is Nothing Then
    Worksheets("Suppliers").Range("P1") = Target
    Target.Select
    If Len(Target) < 3 Then
        Application.SendKeys "%{DOWN}"
    End If

Re: การกำหนดตำแหน่งเคอร์เซอร์

Posted: Fri Feb 07, 2014 11:53 am
by snasui
:D ชีทที่ต้องการดักจับการเปลี่ยนแปลงอยู่ที่ใด ก็นำ Change Event กลับไปไว้ในชีทนั้นครับ

Re: การกำหนดตำแหน่งเคอร์เซอร์

Posted: Fri Feb 07, 2014 12:20 pm
by suka
อาจารย์คะนำ Code ไปวางที่ชีท Form แล้วก็ไม่ทำงานค่ะ

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
      If Sheets("Form").Range("H1") <> "" Then
      End If
End Sub
Code ด้านบนใช้คู่กับ Code ด้านล่างนี้ต้องปรับอย่างไรคะ

Code: Select all

If Not Intersect(Target, Range("H1")) Is Nothing Then
    Worksheets("Suppliers").Range("P1") = Target
    Target.Select
    If Len(Target) < 3 Then
        Application.SendKeys "%{DOWN}"
    End If

Re: การกำหนดตำแหน่งเคอร์เซอร์

Posted: Fri Feb 07, 2014 12:24 pm
by snasui
suka wrote:อาจารย์คะนำ Code ไปวางที่ชีท Form แล้วก็ไม่ทำงานค่ะ

โค้ด:
Private Sub Worksheet_Change(ByVal Target As Range)
      If Sheets("Form").Range("H1") <> "" Then
      End If
End Sub
:lol: Code นี้ไม่ได้สั่งให้ทำอะไร เมื่อไม่ทำงานก็ถูกต้องแล้ว ไม่มีอะไรผิดปกติครับ
suka wrote:Code ด้านบนใช้คู่กับ Code ด้านล่างนี้ต้องปรับอย่างไรคะ

โค้ด:
If Not Intersect(Target, Range("H1")) Is Nothing Then
    Worksheets("Suppliers").Range("P1") = Target
    Target.Select
    If Len(Target) < 3 Then
        Application.SendKeys "%{DOWN}"
    End If
:roll: ชุดของ Code ด้านบนนี้แบบเต็ม ๆ คืออะไรครับ

Re: การกำหนดตำแหน่งเคอร์เซอร์

Posted: Fri Feb 07, 2014 12:46 pm
by suka
snasui wrote:
suka wrote:Code ด้านบนใช้คู่กับ Code ด้านล่างนี้ต้องปรับอย่างไรคะ

โค้ด:
If Not Intersect(Target, Range("H1")) Is Nothing Then
Worksheets("Suppliers").Range("P1") = Target
Target.Select
If Len(Target) < 3 Then
Application.SendKeys "%{DOWN}"
End If
:roll: ชุดของ Code ด้านบนนี้แบบเต็ม ๆ คืออะไรครับ
อาจารย์คะ Code ด้านบนนี้แบบเต็มๆที่จริงก็ใช่ได้แล้วค่ะ แต่ติดตรงจะปรับอย่างไรให้เคอร์เซอร์ไปรอที่เซลล์ H1 ค่ะ

Re: การกำหนดตำแหน่งเคอร์เซอร์

Posted: Fri Feb 07, 2014 1:17 pm
by snasui
:D จะให้ Cursor ไปรอเมื่อสถานการณ์ใดเกิดขึ้นครับ หากเป็นการเลือกชีท ดูตัวอย่างที่นี่ครับ http://msdn.microsoft.com/en-us/library ... 98220.aspx

ตามตัวอย่างเมื่อเลือกชีทแล้วให้เกิดการ Sort ครับ

Re: การกำหนดตำแหน่งเคอร์เซอร์

Posted: Fri Feb 07, 2014 5:23 pm
by suka

Code: Select all

Private Sub Worksheet_Activate()
   Range("a1:a10").Sort key1:=Range("a1"), Order:=xlacending
End Sub
อาจารย์คะ จากด้านบน Code Sort key1 นี้และOrder:=xlacending ความหมายคืออะไรคะ

Re: การกำหนดตำแหน่งเคอร์เซอร์

Posted: Fri Feb 07, 2014 5:32 pm
by snasui
:D ให้สนใจ Event Activate ก่อนครับ สิ่งที่อยู่ภายในคือ Code ที่เราจะต้องเปลี่ยนไปตามที่เราต้องการ หากต้องการจะให้เลือก H1 ก็ต้องเขียน Code เพื่อเลือก H1 แทนการ Sort ครับ กรณีนี้ไม่ได้ถามเกี่ยวกับเรื่อง Sort ยังไม่จำเป็นต้องใช้ ให้ผ่านไปก่อนครับ

Re: การกำหนดตำแหน่งเคอร์เซอร์

Posted: Fri Feb 07, 2014 7:22 pm
by suka
ขอบพระคุณค่ะอาจารย์ นำ Code นี้ไปไว้ที่ชีท Form ได้ตรงตามที่ต้องการค่ะ

Code: Select all

Private Sub Worksheet_Activate()
    Range("h1").Select
End Sub