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

ชีทที่ต้องการดักจับการเปลี่ยนแปลงอยู่ที่ใด ก็นำ 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

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

ชุดของ 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

ชุดของ Code ด้านบนนี้แบบเต็ม ๆ คืออะไรครับ
อาจารย์คะ Code ด้านบนนี้แบบเต็มๆที่จริงก็ใช่ได้แล้วค่ะ
แต่ติดตรงจะปรับอย่างไรให้เคอร์เซอร์ไปรอที่เซลล์ H1 ค่ะ
Re: การกำหนดตำแหน่งเคอร์เซอร์
Posted: Fri Feb 07, 2014 1:17 pm
by snasui

จะให้ 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

ให้สนใจ 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