Page 1 of 1
หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate
Posted: Mon Apr 28, 2014 8:42 am
by zonewar123
Code: Select all
Private Sub CommandButton1_Click()
'Sheet7.Activate
lastrow = Cells(Rows.Count, 3).End(xlUp).Row
With Range("c1:c" & lastrow)
Set c = .Find(TextBox1.Text, LookIn:=xlValues)
If TextBox1.Text = "" Then
MsgBox "¡ÃسҡÃÍ¡¢éÍÁÙÅ", 0, "¡ÃسҡÃÍ¡¢éÍÁÙÅ"
ElseIf Not c Is Nothing Then
'Sheet7.Activate
c.Offset(0, 2).Value = c.Offset(0, 2).Value + TextBox2.Value
MsgBox "ÁÕÊÔ¹¤éÒÍÂÙèáÅéǺ͡¨Ó¹Ç¹à¾ÔèÁä»ÍÕ¡ :" & TextBox2.Value
Do
l = l + 1
Loop Until Cells(l, 1) = ""
'Sheet7.Cells(l, 1) = l - 1
MsgBox "ww"
'Cells(l, 2) = TextBox5.Value
'Cells(l, 3) = TextBox1.Text
'Cells(l, 4) = ComboBox1.Text
'Cells(l, 5) = TextBox2.Value
'Cells(l, 6) = ComboBox2.Text
'Cells(l, 7) = TextBox3.Text
Else
'Sheet5.Activate
'Do
'l = l + 1
'Sheet7.Cells(l, 1) = l - 1
MsgBox "ss"
'Loop Until Cells(l, 1) = ""
'Cells(l, 1) = l - 1
'Cells(l, 2) = TextBox5.Value
'Cells(l, 3) = TextBox1.Text
' Cells(l, 4) = ComboBox1.Text
'Cells(l, 5) = TextBox2.Value
'Cells(l, 6) = ComboBox2.Text
'Cells(l, 7) = TextBox3.Text
'Sheet7.Activate
'Do
'Loop Until Cells(l, 1) = ""
'Cells(l, 1) = l - 1
'Cells(l, 2) = TextBox5.Value
' Cells(l, 3) = TextBox1.Text
'Cells(l, 4) = ComboBox1.Text
'Cells(l, 5) = TextBox2.Value
'Cells(l, 6) = ComboBox2.Text
'Cells(l, 7) = TextBox3.Text
'MsgBox "ww"
End If
End With
End Sub
1.ผมต้องการให้มันหาค่าใน
sheet7 โดยที่ไม่ต้องใช้
sheet7.Activate
2.ผมต้องการให้มันใส่ค่าใน Cells นั้นๆ ใน
sheet7 โดยที่ไม่ต้องใช้
sheet7.Activate ทำอย่างไรครับ
ขอบคุณล่วงหน้าครับ
Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate
Posted: Mon Apr 28, 2014 9:57 pm
by snasui
กรณีไม่ต้องการ Activate สามารถใช้ With...End With เข้ามาช่วยได้ ลองเขียนมาเองก่อน ติดตรงไหนค่อยถามกันต่อครับ
ตัวอย่างการใช้ With...End With
wordpress/collect-data-from-multi-sheets/
Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate
Posted: Tue Apr 29, 2014 7:53 am
by zonewar123
ผมไม่เข้าใจ โค๊ดเลยครับ
Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate
Posted: Tue Apr 29, 2014 8:01 am
by zonewar123
ผมไม่เคยใช้เลยครับ
ลองศึกษาแล้วงง
รู้แค่ว่ามันทำให้โค๊ดสั้นลง
Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate
Posted: Wed Apr 30, 2014 1:59 pm
by snasui
zonewar123 wrote:ผมไม่เข้าใจ โค๊ดเลยครับ
zonewar123 wrote:ผมไม่เคยใช้เลยครับ
ลองศึกษาแล้วงง
รู้แค่ว่ามันทำให้โค๊ดสั้นลง
การเขียน Code จำเป็นต้องศึกษามาตามลำดับ และต้องปรับ Code ได้บ้าง ติดตรงไหนแล้วค่อยถามกันครับ
Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate
Posted: Fri May 09, 2014 11:43 am
by zonewar123
Code: Select all
Private Sub CommandButton1_Click()
With Worksheets("สต็อกวัสดุ").Range("A1:C10")
Do
r = r + 1
Loop Until Cells(r, 1) = ""
Cells(r, 1) = r - 1
Cells(r, 2) = TextBox5.Value
Cells(r, 3) = TextBox1.Text
Cells(r, 4) = ComboBox1.Text
Cells(r, 5) = TextBox2.Value
Cells(r, 6) = ComboBox2.Text
Cells(r, 7) = TextBox3.Text
End With
End Sub
ผมต้องการให้มันไปวางไว้ใน sheet สต็อกวัสดุ
ผมจะต้องแก้ไขอย่างไรบ้างครับอาจารย์
Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate
Posted: Fri May 09, 2014 1:04 pm
by snasui
Code ที่เขี่ยนมาเองนั้นติดปัญหาอะไร ช่วยอธิบายเพิ่มเติมและแนบไฟล์ จะได้ช่วยทดสอบได้ครับ
Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate
Posted: Fri May 09, 2014 2:35 pm
by zonewar123
Code: Select all
Private Sub CommandButton1_Click()
With Worksheets("สต็อกวัสดุ").Range("A1:C10")
Do
r = r + 1
Loop Until Cells(r, 1) = ""
Cells(r, 1) = r - 1
Cells(r, 2) = TextBox5.Value
Cells(r, 3) = TextBox1.Text
Cells(r, 4) = ComboBox1.Text
Cells(r, 5) = TextBox2.Value
Cells(r, 6) = ComboBox2.Text
Cells(r, 7) = TextBox3.Text
End With
End Sub
จากโค็ดข้างต้น ข้อมูลที่ให้ใส่นั้น มันไม่ไปอยู่ที่ sheet สต็อกวัสดุ
มันกับอยู่ที่หน้าที่เราเริ่ม sheet 1
โค็ดนี้จะอยู่ใน Userform1 นะครับ
Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate
Posted: Fri May 09, 2014 10:14 pm
by snasui
ตัวอย่าง Code ตามด้านล่างครับ
Code: Select all
Private Sub CommandButton1_Click()
With Worksheets("สต็อกวัสดุ")
Do
r = r + 1
Loop Until .Cells(r, 1) = ""
.Cells(r, 1) = r - 1
.Cells(r, 2) = TextBox5.Value
.Cells(r, 3) = TextBox1.Text
.Cells(r, 4) = ComboBox1.Text
.Cells(r, 5) = TextBox2.Value
.Cells(r, 6) = ComboBox2.Text
.Cells(r, 7) = TextBox3.Text
End With
End Sub
Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate
Posted: Mon May 12, 2014 8:42 am
by zonewar123
ได้แล้วครับ ขอบคุณครับ
Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate
Posted: Mon May 12, 2014 11:17 am
by zonewar123
Code: Select all
Private Sub CommandButton1_Click()
lastrow = Cells(Rows.Count, 3).End(xlUp).Row
With Worksheets("ʵçÍ¡ÇÑÊ´Ø")
With Range("c1:c" & lastrow)
Set c = .Find(TextBox1.Text, LookIn:=xlValues)
If TextBox2.Text = "" Then
MsgBox "¡ÃسÒãÊè¨Ó¹Ç¹¤èÐ"
ElseIf Not c Is Nothing Then
With Worksheets("ʵçÍ¡ÇÑÊ´Ø")
c.Offset(0, 2).Value = c.Offset(0, 2).Value + CInt(TextBox2.Value)
MsgBox c.Offset(0, 2)
End With
Else
With Worksheets("ʵçÍ¡ÇÑÊ´Ø")
Do
l = l + 1
Loop Until .Cells(l, 1) = ""
.Cells(l, 1) = l - 1
.Cells(l, 2) = TextBox5.Value
.Cells(l, 3) = TextBox1.Text
.Cells(l, 4) = ComboBox1.Text
.Cells(l, 5) = TextBox2.Value
.Cells(l, 6) = ComboBox2.Text
.Cells(l, 7) = TextBox3.Text
MsgBox "ww"
End With
End If
If TextBox2.Value <> "" Then
With Worksheets("ÃѺÇÑÊ´Ø")
Do
r = r + 1
Loop Until .Cells(r, 1) = ""
.Cells(r, 1) = r - 1
.Cells(r, 2) = TextBox5.Value
.Cells(r, 3) = TextBox1.Text
.Cells(r, 4) = ComboBox1.Text
.Cells(r, 5) = TextBox2.Value
.Cells(r, 6) = ComboBox2.Text
.Cells(r, 7) = TextBox3.Text
End With
End If
End With
End With
End Sub
จากโค๊ดข้างต้น
ทำไมเวลาเช็คหา c มันถึงเช็คเฉพาะหน้าชีท ที่เราอยู่ด้วยครับ
ปัญหาคือ?
จะทำยังไงให้มันไปเช็คเอง โดยที่เราไม่จำเป็นต้องอยู่หน้าที่ให้มันเช็ค
เพราะตอนนี้ผมต้องไปหน้า สต็อกวัสดุ เพื่อให้มันเช็ค จะไปชีทลงทะเบียนก็ไม่ได้เพราะมันไม่เช็คมันเช็คเฉพาะชีทที่ทำการเปิดอยู่เท่านั้น
ขอรบกวนผู้รู้ทุกท่านด้วยนะครับ
โค็ดนี้อยู่ที่ Userform1 ครับ
Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate
Posted: Mon May 12, 2014 1:05 pm
by snasui
จากบางส่วนของ Code
Code: Select all
lastrow = Cells(Rows.Count, 3).End(xlUp).Row
With Worksheets("ʵçÍ¡ÇÑÊ´Ø")
With Range("c1:c" & lastrow)
ควรเป็น
Code: Select all
With Worksheets("ʵçÍ¡ÇÑÊ´Ø")
lastrow = .Cells(Rows.Count, 3).End(xlUp).Row
With .Range("c1:c" & lastrow)
สังเกตหลังบรรทัดที่มี
With Worksheets(...)
จะต้องใช้เครื่องหมาย
.
นำหน้า Object ที่เป็นของ
With Worksheets(...)
นั้น นี่คือประโยชน์ของ With ถ้าเราไม่ใช้
.
นำก็แสดงว่าเป็น Object ของ
ชีทปัจจุบัน
Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate
Posted: Mon May 12, 2014 1:37 pm
by zonewar123
Code: Select all
Private Sub CommandButton1_Click()
With Worksheets("ʵçÍ¡ÇÑÊ´Ø")
lastrow = .Cells(Rows.Count, 3).End(xlUp).Row
With .Range("b1:b" & lastrow)
Set c = .Find(TextBox1.Text, LookIn:=xlValues)
If TextBox2.Text = "" Then
MsgBox "¡ÃسÒãÊè¨Ó¹Ç¹¤èÐ"
ElseIf Not c Is Nothing Then
c.Offset(0, 2).Value = c.Offset(0, 2).Value + CInt(TextBox2.Value)
MsgBox c.Offset(0, 2)
Else
With Worksheets("ʵçÍ¡ÇÑÊ´Ø")
Do
l = l + 1
Loop Until .Cells(l, 1) = ""
.Cells(l, 1) = (l - 1) + 1
.Cells(l, 2) = TextBox1.Text
.Cells(l, 3) = ComboBox1.Text
.Cells(l, 4) = TextBox2.Value
.Cells(l, 5) = ComboBox2.Text
.Cells(l, 6) = TextBox3.Text
MsgBox "wks"
End With
End If
ทำไมมันถึงไม่เข้าไปเงื่อนไข elseif ครับผม สงสัย?
มันวิ่งเข้า Else อย่างเดียวเลย
Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate
Posted: Mon May 12, 2014 1:52 pm
by snasui
ก็ต้องตรวจสอบครับว่าค่าที่เราค้นหาคืออะไร และมีค่านั้นหรือไม่ ตัวแปร
c
คือค่าที่เราค้นหา
Statement
ElseIf Not c Is Nothing Then
หมายถึงหากได้มีการกำหนดค่าให้กับตัวแปร
c
และ
c
เป็น Range ใด ๆ แล้ว
Re: หาค่าใน Sheet อื่น โดยที่ไม่ใช้คำสั่ง Sheet?.Activate
Posted: Mon May 12, 2014 2:22 pm
by zonewar123
snasui wrote: ก็ต้องตรวจสอบครับว่าค่าที่เราค้นหาคืออะไร และมีค่านั้นหรือไม่ ตัวแปร
c
คือค่าที่เราค้นหา
Statement
ElseIf Not c Is Nothing Then
หมายถึงหากได้มีการกำหนดค่าให้กับตัวแปร
c
และ
c
เป็น Range ใด ๆ แล้ว
ขอบคุณครับ