คำถามติดแท็ก vba

Visual Basic สำหรับแอปพลิเคชัน เซตย่อยของ Visual Basic ที่ใช้ในแอปพลิเคชัน Microsoft Office ทั้งหมด พิจารณาใช้แท็กนี้พร้อมกับแท็กสำหรับแอปพลิเคชันเฉพาะที่เป็นปัญหา คำถามที่ดีเกี่ยวกับ VBA โดยทั่วไปมีรหัสบางส่วนและขอวิธีแก้ไขปัญหาเฉพาะ คำถามที่ถามถึงวิธีแก้ไขทั้งหมด (โปรดให้รหัส / วิธีการทำสิ่งนี้กับ VBA) เป็นหัวข้อนอกหัวข้อและจะถูกปิดในวงกว้างเกินไป

2
Excel: วิธีการซ่อน / ลบแถบเลื่อนออกจากตัวแบ่งส่วนข้อมูล Pivot Table
ตัวแบ่งส่วนข้อมูลเป็นเครื่องมือที่ยอดเยี่ยมสำหรับ Excel ในปี 2010 ช่วยให้คุณสามารถสลับการเลือกของคุณได้อย่างรวดเร็วเมื่อวิเคราะห์ข้อมูลโดยใช้ตารางสาระสำคัญ บางครั้งมีตัวเลือกมากเกินไปที่จะใส่ลงในหน้าต่างตัวแบ่งส่วนข้อมูลเพื่อให้คุณได้รับแถบเลื่อนแนวตั้ง (ละเว้นตัวเลขในภาพนี้): บ่อยครั้งที่ฉันจะมีตารางสาระสำคัญที่มีการเลือกตัวกรองรายงานแบบคงที่ - เช่นตัวกรองที่ฉันไม่ต้องการให้ผู้ใช้เปลี่ยนเช่นปี = 2013: การเลือกนี้หมายความว่าค่าบางอย่างในตัวแบ่งส่วนข้อมูลของฉันไม่เกี่ยวข้อง (โดยใช้ตัวอย่างด้านบนอาจเป็นพนักงานขายชื่อ Smith ทิ้งไว้ก่อนปี 2013) ดังนั้นฉันไม่ต้องการแสดงในตัวแบ่งส่วนข้อมูล (แต่ฉันต้องการเก็บไว้ในตารางเดือย) แหล่งข้อมูล). สิ่งที่ฉันต้องการทำคือระงับแถบเลื่อนแนวตั้งในตัวแบ่งส่วนข้อมูลเพื่อไม่ให้ผู้ใช้เลือกตัวเลือกที่ไม่เกี่ยวข้อง สามารถทำได้โดยการตั้งค่าตัวแบ่งส่วนข้อมูลหรือ VBA ในขณะที่วิธีแก้ปัญหาที่ไม่ค่อยเหมาะสมของฉันคือการวางสี่เหลี่ยมสีขาวซ้อนทับ ... ข้อเสียคือปุ่ม 'ตัวกรองที่ชัดเจน' จากนั้นผลักออกไปด้านบนขวาอย่างเชื่องช้า หากมีวิธีที่ดีกว่าในการลบแถบเลื่อน (หรือตัวเลือกที่ซ้ำซ้อน) ฉันชอบที่จะได้ยิน!

0
ชื่อของช่วงสามารถเป็นแบบไดนามิกที่มีหลายแผ่นใน Microsoft Excel
ฉันเป็นมือใหม่ใน VBA สิ่งที่ฉันอยากรู้ก็คือชื่อของช่วงสามารถเป็นแบบไดนามิกที่มีหลายแผ่น ฉันค้นหาทางออนไลน์และพบคำถามที่คล้ายกันที่ถามโดยคนอื่นและได้รับคำตอบจากผู้ใช้ชื่อ Gary's Student จากเว็บไซต์นี้ด้านล่างนี้เป็นสำเนาของรหัสของเขา / เธอและลิงก์ไปยังข้อความต้นฉบับ Private Sub Worksheet_Change(ByVal Target As Range) Dim str As String str = Range("A1").Text If Intersect(Range("A1"), Target) Is Nothing Then Exit Sub Dim n As Name For Each n In ActiveWorkbook.Names If n.RefersTo = "=Sheet1!$A$2:$A$4" Then n.Delete End If Next n ActiveWorkbook.Names.Add …

0
ฟังก์ชันการทำงาน AddPicture ของ Excel 2010 เปลี่ยนไปหรือไม่
ฉันอีกแล้ว. ใน Excel 2003 เราใช้ VBA บางตัวทำการเพิ่มรูปภาพลงในแผ่นงานโดยอัตโนมัติ สรุปสั้น ๆ คือ: Dim Pic as Object Dim filePath as String . . . Set Pic = ActiveSheet.Pictures.Insert(filePath) ... โดยที่ filePath ได้รับการอัพเดตพร้อมชื่อไฟล์ที่เหมาะสมโดยมาโครการโทร ใน Excel 2003 สิ่งนี้จะรวมรูปภาพไว้ในสมุดงานซึ่งช่วยให้คุณสามารถบันทึกเปิดใหม่ย้ายไปยังโฟลเดอร์อื่นส่งอีเมล ฯลฯ และอื่น ๆ รูปภาพยังคงอยู่ ใน Excel 2010 มาโครนี้ทำงานได้สวยงามจนกระทั่งคุณบันทึกปิดและโหลดสมุดงาน. xlsx อีกครั้ง จากนั้นคุณจะเห็นสิ่งนี้: อย่างไรก็ตามฟังก์ชันการทำงานได้เปลี่ยนจากการฝังรูปภาพเป็นการเชื่อมโยงกับมัน ฉันไม่พบเอกสารใด ๆ ที่ให้รายละเอียดการเปลี่ยนแปลงครั้งใหญ่นี้ในพฤติกรรม มีใครสังเกตเห็นการเปลี่ยนแปลงในการทำงานนี้บ้างไหม มีการเรียก …

1
เปิดเอกสาร html ด้วย excel save เป็น xls ด้วย batch file
ฉันต้องการเรียกใช้ไฟล์แบตช์ที่จะเปิดไฟล์ html ด้วย excel แล้วบันทึกไฟล์ html ที่เปิดเป็นเอกสาร xls หรือ xlsx ตามหลักแล้วชุดจะถูกกำหนดให้ทำงานทุกคืน การใช้รหัสอย่างง่ายเช่นรหัสด้านล่างจะเปิดเอกสาร html ใน excel start excel test.html ที่ที่ฉันติดอยู่คือที่ที่จะไปกับรหัส ใครจะมีความเข้าใจใด ๆ

1
การเรียกใช้โค้ด Excel 2016 VBA ช้ามาก
ฉันมีกรณีของการเรียกใช้โค้ด vba ที่ช้า ฉันคิดว่ามันยากที่จะเชื่อเพราะฉันมีหน่วยประมวลผล Quad-core Core i7 ที่ทำงานที่ 2.6 GHz ในสมุดงานของฉันฉันมีแบบฟอร์มการป้อนข้อมูลในแผ่นงานแยกต่างหากเพื่อป้อนใบแจ้งหนี้ลงในฐานข้อมูล (แผ่นงาน "frmBienNhan") จากนั้นในแผ่นงานอีกแผ่นฉันสรุปใบแจ้งหนี้ที่ป้อนทั้งหมดด้วยแบบ pivotable (แผ่น "rpt_LSGD") ฉันใช้เหตุการณ์ BeforeDoubleClick ในแผ่นงาน "rpt_LSGD" เพื่อนำผู้ใช้ไปยังแผ่นงานต่าง ๆ ขึ้นอยู่กับว่าพวกเขาคลิกที่ใดเพื่ออำนวยความสะดวกในการนำทาง รหัสทั้งหมดทำงานได้ดี แต่รหัสที่เกี่ยวข้องกับแบบฟอร์มผู้ใช้ทำงานช้ามาก ใช้เวลาดำเนินการประมาณ 8-10 วินาที ฉันเป็นผู้เริ่มต้นกับ Excel VBA ฉันขอขอบคุณความช่วยเหลือใด ๆ การสกัดกั้นรหัสต่อไปนี้ที่ผู้ใช้คลิกสองครั้งบนแผ่นงานและแสดงไปยังแผ่นงานที่เกี่ยวข้อง ส่วนหนึ่งของรหัสนี้ทำงานช้ามาก Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim a As String, b …

1
แสดงเฉพาะลายน้ำเมื่อพิมพ์เอกสาร
ฉันมีเอกสารชุดควบคุม ISO ที่ต้องมีลายน้ำปรากฏเฉพาะเมื่อพิมพ์ซึ่งระบุว่า "UNCONTROLLED เมื่อพิมพ์" ลายน้ำนี้จะปรากฏในส่วนท้ายของเอกสารที่พิมพ์ ฉันไม่ต้องการให้ลายน้ำนี้ปรากฏขึ้นเมื่อเอกสารถูกอ่านด้วยระบบอิเล็กทรอนิกส์ มองไปรอบ ๆ ออนไลน์และไม่พบโซลูชันที่ทำงานตามที่ฉันต้องการ ฉันสามารถตั้งค่าลายน้ำในการตั้งค่าไดรเวอร์การพิมพ์ แต่นั่นไม่ใช่วิธีที่ฉันต้องการ ดูเหมือนว่าฉันจะต้องใช้ VBA เพื่อทำสิ่งนี้ให้สำเร็จเพราะนี่ไม่ใช่คุณสมบัติใน Microsoft Word 2010

1
ฉันจะหยุดแมโคร Excel 2011 VBA บน iMac ได้อย่างไร
ฉันเคยสามารถพิมพ์ command + period เพื่อหยุดแมโครที่ทำงานอยู่ ตอนนี้ดูเหมือนจะไม่มีอะไรหยุดหนึ่ง ฉันจะขัดจังหวะและหยุดการทำงานของแมโคร VBA ที่ใช้งานอยู่ได้อย่างไร

1
ฉันจะใส่ข้อมูล VBA Query Tables ในหนึ่งคอลัมน์ได้อย่างไร
โปรดช่วยฉันใช้รหัสด้านล่าง ฉันต้องการเพียงข้อมูลที่จะเข้าไปในคอลัมน์ N เมื่อใช้สำหรับลูปมันจะข้ามทุกคอลัมน์ ฉันจะแก้ไขสิ่งนี้ได้อย่างไร Dim W As Worksheet: Set W = ActiveSheet Last = W.Range("A1500").End(xlUp).Row If Last = 7 Then Exit Sub Dim Symbols As String Dim i As Integer Dim j As Integer ' Code below Loops on the stock tickers and concatenate them For i = 8 …

2
ค่าคงที่ Excel - วิธีการอ้างอิงแบบไดนามิก?
ฉันกำลังพัฒนาสเปรดชีตที่ซับซ้อนสำหรับเพื่อน Excel เชิงลึกครั้งแรกของฉัน ทำงานใน Excel 2003 ปัญหาที่ฉันมีคือทำงานกับค่าคงที่ xl เช่น xlPaper ปัญหาเกิดขึ้นเมื่อพยายามทำงานกับค่าคงที่มันเป็นเหมือนค่าที่ไม่สามารถใช้งานได้เมื่อผ่านการอ้างอิง "xlWhething" รหัสที่มีปัญหา: Dim myRange As String, LM As Integer, RM As Integer, TM As Integer, BM As Integer, Papersizing As String, Orient As String, Quality As Integer On Error GoTo Errorcatch TM = ws.Range("f2").Value LM = ws.Range("f3").Value BM = …

1
ฟังก์ชัน Excel VBA เพื่ออัปเดตค่าของเซลล์ + = เซลล์จะยกเลิกค่า
ฉันจะสร้างมันได้อย่างไรถ้าฉันป้อนอะไรลงในช่วงเซลล์ B3: E3 ค่าจะเป็นสิ่งที่ฉันป้อนบวกกับค่าของเซลล์ด้านบน ตัวอย่าง: หากฉันป้อน 20 ลงในเซลล์ C3 เมื่อฉันกดปุ่มย้อนกลับหรือคลิกออกค่าจะได้รับการอัปเดตเป็น 40 จนถึงตอนนี้ฉันรู้ว่าฉันต้องมีอะไรบางอย่างที่คล้ายกัน: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Range("B3:E3").Value = Range("B2:E2").Value End Sub และฉันรู้ว่าฉันต้องการเข้าถึงค่าออฟเซ็ต แต่ VBA ไม่ใช่มือขวาของฉันและฉันไม่สามารถตอบคำถามนี้ได้อย่างถูกต้อง

1
คัดลอกเซลล์ไปยังชีตอื่นและแทรกแถวสำหรับเซลล์ที่คัดลอก
ฉันกำลังพยายามสร้างส่วนย่อยที่คัดลอกข้อมูลจากฟอร์มหนึ่ง (ซึ่งมีสี่เซลล์) ไปยังชีตอื่น เมื่อมันคัดลอกข้อมูลก็จะสร้างแถวใหม่ แต่ละแบบฟอร์มมีจำนวนแถวสูงสุดได้สิบแถว แต่ควรสามารถรับรู้ได้เมื่อแบบฟอร์มมีเซลล์ว่างและหยุด มันควรจะง่ายต่อการทำซ้ำในรูปแบบอื่น ๆ ตัวอย่างของแบบฟอร์มสามารถเห็นได้โดยใช้ลิงค์ด้านล่าง นี่คือรหัสของฉันซึ่งใช้งานไม่ได้ Sub Update_1() Dim lastrow As Long, erow As Long lastrow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row For i = lastrow To 3 Sheet1.Cells(i, 1).Copy erow = Sheet2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row Sheet1.Paste Destination:=Sheet2.Cells(erow, 2) Sheet1.Cells(i, 2).Copy Sheet1.Paste Destination:=Worksheets("Sheet2").Cells(erow, 1) Sheet1.Cells(i, 3).Copy Sheet1.Paste Destination:=Worksheets("Sheet2").Cells(erow, 8) Sheet1.Cells(i, …

2
วิธีรวมค่าจากหลายแถวเข้าในแถวเดียวด้วยเครื่องหมายจุลภาค
ฉันมีไฟล์ Excel ที่แสดง SKU ของผลิตภัณฑ์ในหนึ่ง culumn และ URL รูปภาพผลิตภัณฑ์ในอีกคอลัมน์หนึ่ง ปัญหาของฉันคือไฟล์มีหลายแถวสำหรับผลิตภัณฑ์เดียวกัน ... ... เมื่อ CMS ที่ฉันใช้ในร้านค้าของฉันสามารถอ่านการนำเข้าเช่นนี้ได้เท่านั้น: ฉันจะทำเอง แต่มีสินค้านับร้อยแต่ละตัวมีลิงค์รูปภาพหลายอัน โดยพื้นฐานแล้วฉันต้องมี SKU001 (SKU002, SKU003 และอื่น ๆ ) เพียงหนึ่งรายการและรวมเซลล์คอลัมน์ B ที่สอดคล้องกันไว้ในเซลล์เดียวโดยมีค่าทั้งหมดคั่นด้วยเครื่องหมายจุลภาค มีวิธีการทำเช่นนี้?

1
วิธีการล้างเนื้อหาของเซลล์ B ตามมูลค่าของเซลล์ A
สวัสดีฉันกำลังพยายามหาตัวอย่างเฉพาะดังต่อไปนี้: ถ้าเซลล์ C19 และ C21 ทั้งคู่เท่ากับ "ไม่" ค่าใด ๆ ในเซลล์ C24: C26 จะถูกลบ หาก C19 หรือ C21 เท่ากับ "ใช่" ดังนั้น C24: C26 จะไม่ได้รับผลกระทบ

1
กำหนดให้บังคับแถวหากเติมเซลล์แรก
ฉันมีไฟล์ Excel ที่ฉันต้องการให้คนกรอกข้อมูลบางอย่าง ฉันต้องการสร้างช่วงของเซลล์ในแถวบังคับถ้าเติมเซลล์แรกในแถวเช่นถ้าเติมเซลล์ A7 แล้วต้องใส่เซลล์ B7-O7 และทำซ้ำตัวเองจนกว่าจะมีเซลล์ ในคอลัมน์ A ที่ไม่ได้กรอกข้อมูล ฉันลองใช้การเข้ารหัส VBA ไม่ดีที่นี่ Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If Sheets("Sheet1").Range("A7").Value <> "" And Sheets("Sheet1").Range("B7").Value = "" Or Range("C7").Value = "" Or Range("D7").Value = "" Or Range("E7").Value = "" Or Range("F7").Value = "" Or Range("G7").Value = …

2
การใช้ Activecell ในสูตร VBA
ฉันเป็นมือใหม่ @ VBA ฉันต้องการใช้ค่าของสูตรในเซลล์ที่ใช้งานเพื่อป้อนลงในสูตรอื่น (ผลรวมที่เซลล์ที่ใช้งานกำหนดขีด จำกัด ของแถวโคลัมที่จะรวมอยู่ในผลรวม) ฉันควรใช้ Activecell.value หรืออย่างอื่น?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.