: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
🪷 คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ

ต้องการแทนค่าตัวแปรใน โค๊ด

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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่

Post a reply


This question is a means of preventing automated form submissions by spambots.
Smilies
:D :thup: :cp: :flw: :rz: :sg: :tt: :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :ard: :arl: :aru: :| :mrgreen: :geek: :ugeek:

BBCode is ON
[img] is ON
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: ต้องการแทนค่าตัวแปรใน โค๊ด

Re: ต้องการแทนค่าตัวแปรใน โค๊ด

#21

by snasui » Mon May 28, 2012 10:46 pm

:D ลองสร้าง PivotTable ด้วย Manual มาให้ดูเป็นตัวอย่างสักสองสามอัน เพื่อจะได้ดูว่ามีความต้องการเป็นอย่างไร เนื่องจากอ่าน Code และอ่านจากอธิบายมาแล้วยังไม่เคลียร์ครับ

Re: ต้องการแทนค่าตัวแปรใน โค๊ด

#20

by akekorn » Mon May 28, 2012 10:13 pm

ผมได้แนบไฟด์มาให้แล้วครับรบกวนด้วยครับ
Attachments
PPR.zip
(71.39 KiB) Downloaded 5 times

Re: ต้องการแทนค่าตัวแปรใน โค๊ด

#19

by snasui » Thu May 24, 2012 8:41 pm

:lol: กรณีแนบไฟล์ที่มีขนาดไม่เกิน 300kb ไม่ได้ช่วยแจ้งด้วยครับว่ามีการฟ้องอย่างใดหรือไม่ ที่ผมบอกไม่ใช่เฉพาะแนบไฟล์ครับ แต่แจ้งให้โพสต์ Code ให้แสดงเป็น Code ตาม Link ที่ให้ไปเพื่อสะดวกต่อการอ่านและ Copy ไปทดสอบครับ

Re: ต้องการแทนค่าตัวแปรใน โค๊ด

#18

by akekorn » Thu May 24, 2012 5:37 pm

อ่านแล้วครับแต่ผม attach file ไม่ได้ครับ

Re: ต้องการแทนค่าตัวแปรใน โค๊ด

#17

by snasui » Wed May 23, 2012 12:08 pm

:shock: ไม่ทราบว่าได้อ่านความเห็นด้านล่างนี้หรือไม่ครับ :?:
snasui wrote: ช่วยปรับ Code ให้เป็น Code ด้วยครับ จะได้สะดวกในการอ่าน ดูวิธีการตาม Link นี้ครับ viewtopic.php?f=6&t=1187 และช่วยส่งไฟล์ที่ Update และมี Code นี้แล้วมาให้ด้วยครับ จะได้ช่วยทดสอบได้

Re: ต้องการแทนค่าตัวแปรใน โค๊ด

#16

by akekorn » Wed May 23, 2012 10:18 am

โค๊ดครับ

Sub ake()
Dim i, ii As Integer
Dim a, b, c, d, e As String
Application.ScreenUpdating = False
Sheets("data").Select
Range("is1").Select
ActiveCell.Value = Range("is1").Value
Do While Not IsEmpty(ActiveCell.Value)
i = i + 1
a = ActiveCell.Value
b = Mid(a, 1, Len(a) - 1) & "r"
c = CStr(i)
d = "PivotTable" + c
Sheets("DATA").Select
Range("a1").Select
'ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="data!R1C1:R" + CStr(i) + "C71").CreatePivotTable TableDestination:="", TableName:=d
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="data!R1C1:R" + CStr(i) + "C71") _
.CreatePivotTable TableDestination:="", TableName:="PivotTable1"

ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("PivotTable" + ii).SmallGrid = False
ActiveSheet.PivotTables("PivotTable" + ii).AddFields RowFields:=Array(a, _
"gl_group"), ColumnFields:=Array("sector", "sectoren"), PageFields:= _
"mapping_no"
With ActiveSheet.PivotTables("PivotTable" + ii).PivotFields(b)
.Orientation = xlDataField
.NumberFormat = "#,##0.00"
End With
ActiveSheet.PivotTables("PivotTable" + ii).PivotFields("mapping_no").CurrentPage = _
"BAU Expense"
Cells.Select
Cells.EntireColumn.AutoFit
Range("B2").Select


ActiveCell.Offset(1, 0).Select
Loop



End Sub

Re: ต้องการแทนค่าตัวแปรใน โค๊ด

#15

by snasui » Mon May 21, 2012 8:10 pm

:D ช่วยปรับ Code ให้เป็น Code ด้วยครับ จะได้สะดวกในการอ่าน ดูวิธีการตาม Link นี้ครับ :arrow: viewtopic.php?f=6&t=1187 และช่วยส่งไฟล์ที่ Update และมี Code นี้แล้วมาให้ด้วยครับ จะได้ช่วยทดสอบได้

Re: ต้องการแทนค่าตัวแปรใน โค๊ด

#14

by akekorn » Mon May 21, 2012 10:16 am

คุณคนควนครับต้องขอโทษด้วยที่รบกวนอีกแต่ผมไม่เข้าใจตรงที่บอกว่าถ้าเป็น Field ที่ไม่มีอยู่จริงจะ Error ครับ
เพราะค่าfield ที่ผมใส่ในตัวอย่างที่ให้ในเซล IS1 และ IT1 คือ
ขออนุญาติอธิบายครับ คือผมต้องการทำpivot table โดย field ที่ต้องการเปลี่ยนไปคือ2 field ตามที่ผมใส่ค่าไว้ในเซล IS1 และ IT1 และจะเปลี่ยนไปเรื่อยๆจนครบทุกชีท
โดยจะเห็นจากในรูปที่ทำ povot แล้ว สิ่งที่ต้องการเปลี่ยนคือ ชื่อ pivotable และ ชื่อfield ที่ได้hight light สีเหลืองและสีแดงไว้ตามภาพ ครับ ข้อมูลก็เป็นตามไฟด์แนบ เพราะผมมองแล้วว่าโค๊ดหลักยังเป็นแบบเดิม คือ
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="data!R1C1:R" + CStr(i) + "C71").CreatePivotTable TableDestination:="", TableName:="PivotTable1"
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("PivotTable1").SmallGrid = False
ActiveSheet.PivotTables("PivotTable1").AddFields RowFields:=Array("mt_r", _
"gl_group"), ColumnFields:=Array("sector", "sectoren"), PageFields:= _
"mapping_no"
With ActiveSheet.PivotTables("PivotTable1").PivotFields("mt_t")
.Orientation = xlDataField
.NumberFormat = "#,##0.00"
End With
ActiveSheet.PivotTables("PivotTable1").PivotFields("mapping_no").CurrentPage = _
"BAU Expense"
Cells.Select
Cells.EntireColumn.AutoFit
Range("B2").Select

แต่ต้องการเปลี่ยนค่าตัวแปร อย่างในโค๊ดตัวอย่างคือ
TableName:="PivotTable1"
.AddFields RowFields:=Array("mt_r"
.PivotFields("mt_t")

สามตัวนี้ครับ ผมลองใส่ค่าตัวแปร string ลงไปแล้วแต่ก็ error ตามอีกภาพ ผมจึงอยากทราบว่าจะใส่ค่าตัวแปรที่เป็น string อย่างไรครับจะ รันผ่านครับ รบกวนคุณคนควนช่วยอนุเคราะห์ด้วยครับ
ขอบคุณครับ
Attachments
ตารางที่ต้องการครับ
ตารางที่ต้องการครับ
example.JPG (243.55 KiB) Viewed 95 times
ที่ลองทำแล้วแต่ error ครับ
ที่ลองทำแล้วแต่ error ครับ
example1.JPG (291.36 KiB) Viewed 95 times

Re: ต้องการแทนค่าตัวแปรใน โค๊ด

#13

by snasui » Fri May 18, 2012 6:11 pm

:D ถ้า Loop เหมือนด้านบนก็ดูวิธีการใส่ตัวแปร j ให้กับการตั้งชื่อ PivotTable ซึ่งจะใช้ลักษณะเดียวกันครับ แต่ถ้าเป็น Field ที่ไม่มีอยู่จริงจะ Error ครับ :mrgreen:

Re: ต้องการแทนค่าตัวแปรใน โค๊ด

#12

by akekorn » Fri May 18, 2012 6:08 pm

ครับผมก็ทำตามแบบ loop เดิมด้านบนครับ แค่อยากได้ตัวแปรตามที่สงสัย ครับขอบคุณครับ

Re: ต้องการแทนค่าตัวแปรใน โค๊ด

#11

by snasui » Fri May 18, 2012 6:03 pm

:D ไม่ทราบว่าต้องการ Loop โดยคำค่าใดมาใส่ มีความสัมพันธ์กับค่าใดในเซลล์หรือข้อมูลใดหรือไม่ ช่วยทำตัวอย่างข้อมูลเล็ก ๆ มาเพื่อประกอบความเข้าใจ สะดวกต่อการช่วยทดสอบด้วยครับ

Re: ต้องการแทนค่าตัวแปรใน โค๊ด

#10

by akekorn » Fri May 18, 2012 5:57 pm

ขอบคุณครับคุณคนควนแต่ผมอยากทราบหากจะใส่ตัวแปร แทนข้อความ ทีผมได้ขีดเส้นใต้จะทำอย่างไรครับ

AddFields RowFields:=Array("mt_r"
With ActiveSheet.PivotTables("PivotTable" & i).PivotFields("mt_t")


ขอบคุณครับ

Re: ต้องการแทนค่าตัวแปรใน โค๊ด

#9

by snasui » Fri May 18, 2012 4:40 pm

:D ลองดูตัวอย่างการปรับ Code ตามด้านล่างครับ ผมไม่ได้ทดสอบว่ามันแสดงผลถูกต้องหรือไม่ เนื่องจากไม่ทราบว่าต้องการให้แสดง PivotTable ที่เซลล์ใด แต่เขียน Code ตัวอย่างสำหรับการ Loop มาให้ดูเป็นตัวอย่างว่า ถ้าจะให้ชื่อ PivotTable เปลี่ยนไปตามจำนวนค่าในคอลัมน์ A นั้นจะมีการเพิ่ม Loop เข้าไปอย่างไร

Code: Select all

On Error Resume Next
Dim i As Integer
Dim j As Integer

Application.ScreenUpdating = False
Sheets("data").Select
Range("a1").Select
Do While Not IsEmpty(ActiveCell.Value)
 i = i + 1
 ActiveCell.Offset(1, 0).Select
Loop

For j = 1 To i
    Range("A1").Select
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="data!R1C1:R" + CStr(i) + "C71") _
    .CreatePivotTable TableDestination:="", TableName:="PivotTable" & j
    ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
    ActiveSheet.Cells(3, 1).Select
    ActiveSheet.PivotTables("PivotTable" & j).SmallGrid = False
    ActiveSheet.PivotTables("PivotTable" & j).AddFields RowFields:=Array("mt_r", _
        "gl_group"), ColumnFields:=Array("sector", "sectoren"), PageFields:= _
        "mapping_no"
    With ActiveSheet.PivotTables("PivotTable" & j).PivotFields("mt_t")
        .Orientation = xlDataField
        .NumberFormat = "#,##0.00"
    End With
    ActiveSheet.PivotTables("PivotTable" & j).PivotFields("mapping_no").CurrentPage = _
        "BAU Expense"
    Cells.Select
    Cells.EntireColumn.AutoFit
Next j

Range("B2").Select

Re: ต้องการแทนค่าตัวแปรใน โค๊ด

#8

by akekorn » Fri May 18, 2012 4:05 pm

ครับคือผมจะทำ pivot table โดยแบ่งตามกลุ่ม ที่เซล IH และ II จะเป็นตัวบอกว่าจะจัดกลุ่มตามอะไรครับ และทำจนกว่าจะหมดแถวคือจำนวน pivot ที่จะทำ หากผมเขียนโปรแกรมโดยอ้างชื่อละ row ก็ทำได้แต่ต้องเขียนแบบเดียวกันถึง29 ครั้งและมองว่าเราสามารถแทนค่าตัวแปรเข้าไปได้ จึงได้hightlight ส่วนที่ต้องการเปลี่ยนโดยจะใส่ตัวแปรเข้าไปแต่คงใส่ยังไม่ถูกโปรแกรมเลย error ครับ จึงอยากรบกวนคุณคนควนว่าผมจะใส่อย่างไรดีครับ ผมได้ attach file ใหม่ให้ครับเพราะอันเดิมเปลี่ยนคอลัมภ์รบกวนใช้ไฟด์ใหม่ครับ
Attachments
PPR.XLS
(128 KiB) Downloaded 5 times

Re: ต้องการแทนค่าตัวแปรใน โค๊ด

#7

by snasui » Fri May 18, 2012 3:42 pm

:shock: ช่วยอธิบายสิ่งที่ต้องการจะทำมาโดยสังเขปด้วยครับว่า งานที่จะให้ Module2 ทำนั้นมีขั้นตอนเป็นอย่างไร และติดในขั้นตอนไหน เท่าที่เห็นเป็นการนำค่าในเซลล์ IS1 มาใช้กับ ActiveCell เมื่อ IS1 เป็นค่าว่างก็เลยจบขั้นตอนการทำงาน

Re: ต้องการแทนค่าตัวแปรใน โค๊ด

#6

by akekorn » Fri May 18, 2012 2:36 pm

คืออยากให้module 2 run เพราะดูโค๊ดแล้วเปลี่ยนตัวแปรจะได้ไม่ต้องเขียนยืดยาวครับ
Attachments
PPR.XLS
ไฟด์แนบครับ
(128 KiB) Downloaded 5 times

Re: ต้องการแทนค่าตัวแปรใน โค๊ด

#5

by akekorn » Fri May 18, 2012 2:32 pm

ไฟด์แนบครับ
Attachments
sample.jpg
sample.jpg (281.63 KiB) Viewed 124 times

Re: ต้องการแทนค่าตัวแปรใน โค๊ด

#4

by snasui » Fri May 18, 2012 2:11 pm

:D ช่วยแสดง Code VBA ให้เป็น Code เพื่อให้ง่ายต่อการอ่านและการ Copy ไปทดสอบ ตามกระทู้นี้ครับ viewtopic.php?f=3&t=1187

สำหรับภาพที่แนบได้จะต้องมีขนาดไม่เกิน 800*600 และควรแนบไฟล์ตัวอย่างเพื่อจะได้ช่วยทดสอบครับ

Re: ต้องการแทนค่าตัวแปรใน โค๊ด

#3

by akekorn » Fri May 18, 2012 2:09 pm

ถ้าอย่างนั้นผมขออนุญาติอธิบายครับ

คือค่าที่ต้องการเปลี่ยนคือ
TableName:="PivotTable1" ผมจะแทนค่าเป็นสมมติมีตัวแปร A = "Pivottable2"

ActiveSheet.PivotTables("PivotTable1") ต้องการเปลี่ยนเหมือนกัน

AddFields RowFields:=Array("mt_r" ต้องการใสตัวแปรแทน "mt_r"
PivotFields("mt_t") ต้องการใสตัวแปรแทน "mt_t"

รบกวนด้วยครับ
ขอบพระคุณล่วงหน้าครับ

Re: ต้องการแทนค่าตัวแปรใน โค๊ด

#2

by akekorn » Fri May 18, 2012 2:04 pm

ทำไมผมลงรูปไม่ได้ครับ งง

Top