: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

สอบถามการนับ sheets ของ VBA

ฟอรัมถาม-ตอบปัญหาการใช้งาน Macro และ VBA
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
titus
Member
Member
Posts: 89
Joined: Sun Aug 24, 2014 1:34 pm

สอบถามการนับ sheets ของ VBA

#1

Post by titus »

สอบถามการนับ sheets ของ VBA
VBA จะนับ sheets ยังไง ครับ
อย่างเช่นภาพ
มีsheet 1-15 และ sheet DATA ,START

Code: Select all

Dim i as integer
Head8_h_1()
Sheets("START").Select
Range("H2").Select
i = ActiveCell.Value
Range("B6:AE21").Select
 Selection.Copy
    Sheets(i).Select
    Range("E121").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False    
        Sheets("START").Select
	End Sub
ถ้าเราเอา 1-15 ไว้ข้างหน้าชีท สามารถรันมาโครได้
แต่ถ้าเราเอา ชีท DATA หรือ START ไว้ข้างหน้าจะ ERROR
ก็เลยงงวิธีนับ ของ VB ครับว่านับยังไงแน่ เพราะ เราเเทนค่า i ไปแล้ว
Attachments
1.png
1.png (15.25 KiB) Viewed 164 times
lnongkungl
Member
Member
Posts: 92
Joined: Tue Nov 14, 2017 11:04 am
Excel Ver: 2013

Re: สอบถามการนับ sheets ของ VBA

#2

Post by lnongkungl »

ที่หน้า VBAProject จะมีเลข sheet อยู่ครับ ผมก็เคยพลาดหลายทีละ สลับ sheet ไปมาๆ แล้วเขียน code ใส่หน้า sheet ผิด
ปัจจุบัน ก็ดูตรงนี้ เอาครับ
Attachments
1.jpg
1.jpg (29.29 KiB) Viewed 159 times
titus
Member
Member
Posts: 89
Joined: Sun Aug 24, 2014 1:34 pm

Re: สอบถามการนับ sheets ของ VBA

#3

Post by titus »

lnongkungl wrote:ที่หน้า VBAProject จะมีเลข sheet อยู่ครับ ผมก็เคยพลาดหลายทีละ สลับ sheet ไปมาๆ แล้วเขียน code ใส่หน้า sheet ผิด
ปัจจุบัน ก็ดูตรงนี้ เอาครับ

แล้วถ้าเราแทนค่า ชื่อในตัวแปรไปเเล้ว จริงๆ น่าจะไปเลือกชีทตามชื่อตัวแปรที่เราแทนค่าไป

ถ้าชื่อชีทเป็นอักษร ไม่งงแย่เลยหรอครับ
eyepop99
Member
Member
Posts: 127
Joined: Fri Sep 01, 2017 3:19 pm
Excel Ver: 365,2019,2010

Re: สอบถามการนับ sheets ของ VBA

#4

Post by eyepop99 »

titus wrote:
lnongkungl wrote:ที่หน้า VBAProject จะมีเลข sheet อยู่ครับ ผมก็เคยพลาดหลายทีละ สลับ sheet ไปมาๆ แล้วเขียน code ใส่หน้า sheet ผิด
ปัจจุบัน ก็ดูตรงนี้ เอาครับ

แล้วถ้าเราแทนค่า ชื่อในตัวแปรไปเเล้ว จริงๆ น่าจะไปเลือกชีทตามชื่อตัวแปรที่เราแทนค่าไป

ถ้าชื่อชีทเป็นอักษร ไม่งงแย่เลยหรอครับ
โดยปกติแล้วการตั้งชื่อชีต จะตั้งชื่อเป็นชื่อที่มีนัยยะสำคัญ เพื่อป้องการ การงงชื่อชีต
แต่ถ้าเป็นจำนวนมากและลูป ดูชื่อชีตได้จาก VBAproject(จะอยู่หน้าชื่อชีต ตามคอมเมนท์ที่ 2 ) ครับ
titus
Member
Member
Posts: 89
Joined: Sun Aug 24, 2014 1:34 pm

Re: สอบถามการนับ sheets ของ VBA

#5

Post by titus »

eyepop99 wrote:
titus wrote:
lnongkungl wrote:ที่หน้า VBAProject จะมีเลข sheet อยู่ครับ ผมก็เคยพลาดหลายทีละ สลับ sheet ไปมาๆ แล้วเขียน code ใส่หน้า sheet ผิด
ปัจจุบัน ก็ดูตรงนี้ เอาครับ

แล้วถ้าเราแทนค่า ชื่อในตัวแปรไปเเล้ว จริงๆ น่าจะไปเลือกชีทตามชื่อตัวแปรที่เราแทนค่าไป

ถ้าชื่อชีทเป็นอักษร ไม่งงแย่เลยหรอครับ
โดยปกติแล้วการตั้งชื่อชีต จะตั้งชื่อเป็นชื่อที่มีนัยยะสำคัญ เพื่อป้องการ การงงชื่อชีต
แต่ถ้าเป็นจำนวนมากและลูป ดูชื่อชีตได้จาก VBAproject(จะอยู่หน้าชื่อชีต ตามคอมเมนท์ที่ 2 ) ครับ

ขอบคุณครับ
ตอนนี้ ผมมี ชีทชื่อที่เป็นตัวเลขและอักษรรวมกัน ประมาณ10กว่าชีท
ผมจะครอบ for i to xx ยังไงดีครับ ผมต้องการเปลี่ยน 211x109 เป็น 104x60x30 หรือ 208x107

Code: Select all

Sub Report()
Dim i As String
Dim name1, size1, lacq1, type1, sheet, scrap, full1 As String
Sheets(211x109).Select
Range("C1").Select
Do While Not IsEmpty(ActiveCell.Value)
name1 = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
size1 = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
lacq1 = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
type1 = ActiveCell.Value
ActiveCell.Offset(300, 0).Select
sheet = ActiveCell.Value
ActiveCell.Offset(0, -4).Select
scrap = ActiveCell.Value
ActiveCell.Offset(0, -1).Select
full1 = ActiveCell.Value
ActiveCell.Offset(-300, 0).Select
ActiveCell.Offset(0, 11).Select
myaddress = ActiveCell.Address
Sheets("ÃÒ§ҹStock").Select
Range("B376").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = name1
ActiveCell.Offset(0, 1).Value = size1
ActiveCell.Offset(0, 2).Value = lacq1
ActiveCell.Offset(0, 3).Value = full1
ActiveCell.Offset(0, 4).Value = scrap
ActiveCell.Offset(0, 6).Value = sheet
ActiveCell.Offset(0, 14).Value = type1
Sheets(211x109).Select
Range(myaddress).Select
Loop
End Sub
User avatar
logic
Gold
Gold
Posts: 1511
Joined: Thu Mar 18, 2010 1:57 pm
Excel Ver: 365

Re: สอบถามการนับ sheets ของ VBA

#6

Post by logic »

titus wrote:สอบถามการนับ sheets ของ VBA
VBA จะนับ sheets ยังไง ครับ
อย่างเช่นภาพ
มีsheet 1-15 และ sheet DATA ,START

Code: Select all

Dim i as integer
Head8_h_1()
Sheets("START").Select
Range("H2").Select
i = ActiveCell.Value
Range("B6:AE21").Select
 Selection.Copy
    Sheets(i).Select
    Range("E121").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False    
        Sheets("START").Select
	End Sub
ถ้าเราเอา 1-15 ไว้ข้างหน้าชีท สามารถรันมาโครได้
แต่ถ้าเราเอา ชีท DATA หรือ START ไว้ข้างหน้าจะ ERROR
ก็เลยงงวิธีนับ ของ VB ครับว่านับยังไงแน่ เพราะ เราเเทนค่า i ไปแล้ว
ลองดูครับ

นับชีตเฉพาะที่มีชื่อเป็นตัวเลขว่ามีกี่ชีต :)

Code: Select all

Dim i As Integer, s As Worksheet
For Each s In Worksheets
    If IsNumeric(s.Name) Then
        i = i + 1
    End If
Next s
Post Reply