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

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

0
MS Excel 2016 หยุดทำงานเมื่อแทรก UserForm
ฉันเคยติดตั้ง MS Office 2007 มาก่อนหน้านี้และเมื่อเร็ว ๆ นี้ฉันติดตั้ง MS Office 2016 เพิ่มเติมเมื่อฉันพยายามเพิ่ม UserForm ในสมุดงานเปล่า Excel ล้มเหลวโดยไม่มีคำอธิบายใด ๆ เมื่อฉันพยายามที่จะเล่นกับความเข้ากันได้มันเริ่มแทนที่จะล้มเหลวอ้างอิง ข้อผิดพลาด 336 . แนวทางที่เป็นไปได้ทั้งหมดที่พบในเว็บไม่ได้แก้ปัญหาของฉัน หากมีคนมีปัญหาเหมือนกัน / คล้ายกันคุณแก้ปัญหาอย่างไร ( ถ้าคุณทำ )?

1
จะทราบได้อย่างไรว่าแมโครใดถูกกำหนดให้กับปุ่มแถบเครื่องมือบางอันใน Word 2003
ฉันมีแถบเครื่องมือ Word 2003 ที่สร้างโดยบุคคลอื่นมานานแล้ว แถบเครื่องมือประกอบด้วยปุ่มจำนวนมากและมาโครที่ได้รับมอบหมาย จนถึงตอนนี้ฉันสามารถตั้งค่าเบรกพอยต์ในรหัส VBA เพื่อหาว่าแมโครใดที่ทำงานอยู่ แต่สำหรับปุ่มเดียวในแถบเครื่องมือของฉันฉันมีปัญหา ดูเหมือนว่าจะไม่มีมาโครที่เกี่ยวข้อง เมื่อฉันคลิกที่ปุ่มแถบเครื่องมือ Word จะพูดว่า "ไม่พบมาโคร ... ") กลยุทธ์การค้นหาเบรกพอยต์ของฉันดูเหมือนจะไม่ใช่แนวคิดการชนะที่นี่ ฉันรู้เรื่องนี้ดีมาก: เมนูเครื่องมือ & gt; ปรับแต่ง & gt; คลิกขวาที่ปุ่มแถบเครื่องมือเฉพาะ: น่าเสียดายที่นี่ไม่ได้ช่วยอะไรฉัน ฉันสามารถดูคุณสมบัติเหตุการณ์การโทรกลับสำหรับปุ่มแถบเครื่องมือได้หรือไม่? ฉันจำเป็นต้องรู้มาโครว่ามีปุ่มใดที่ตั้งใจจะให้ทำงาน

2
ข้อผิดพลาดรันไทม์ '1004';
ฉันพยายามคัดลอกสูตรจาก N39 จนถึงแถวสุดท้าย แต่ฉันมักจะได้รับข้อผิดพลาดรันไทม์ '1004' อ้างถึงบรรทัดนี้: n.formula = "=IF(AND(ISNUMBER(K39),ISNUMBER(L39))=TRUE,IF(ISNUMBER(M39),(K39-L39)*M39,(K39-L39)),"")" อย่างไรก็ตามเมื่อฉันลองเปลี่ยนสูตรเป็นสิ่งที่ง่ายกว่าเช่น = L39-K39 รหัสก็ใช้งานได้ดี ฉันขอขอบคุณความช่วยเหลือในการแก้ไขปัญหารหัสของฉัน นี่คือรหัสของฉัน Sub FillDownFormula() Dim LastRow As Long Dim n As Range LastRow = Cells(Rows.Count, "I").End(xlUp).Row Set n = Range("N39:N" & LastRow) n.formula = "=IF(AND(ISNUMBER(K39),ISNUMBER(L39))=TRUE,IF(ISNUMBER(M39),(K39-L39)*M39,(K39-L39)),"")" Set n = Nothing End Sub ขอบคุณ

1
รวมหลายแถวเข้าด้วยกัน
ฉันกำลังพยายามรวมข้อมูลหลายแถวเข้าด้วยกัน คอลัมน์ A มีค่าที่การจัดกลุ่มจะเป็นไปตามนั้น - แถวที่ค่าของคอลัมน์ A ตรงกันจะรวมกันเป็นหนึ่งแถว ช่วงของฉันขยายจากคอลัมน์ A ถึง X ดังนั้นฉันต้องการแถวข้อมูลที่ตรงกันเพื่อเริ่มในคอลัมน์ Y ตัวอย่าง: ╔══════╦═══╦═══╗ ║ 1001 ║ A ║ C ║ ║ 1001 ║ B ║ D ║ ║ 1002 ║ A ║ E ║ ║ 1002 ║ B ║ F ║ ║ 1002 ║ C ║ G …

1
ฟังก์ชัน Microsoft Excel Ceiling
ฉันมีข้อมูลจำนวนมากที่ฉันพยายามป้อนลงในสเปรดชีต excel ข้อมูลทั้งหมดในคอลัมน์หลังจากรูปแรกมีรูปแบบดังนี้ ข้อมูลคอลัมน์ก่อนหน้า * 1.3 {ปัดเศษเป็นค่าทวีคูณที่ใกล้เคียงที่สุด 5} Previous Column data * 1.3เป็นเรื่องง่ายพอที่จะตั้งขึ้น แต่ฉันกำลังมองหาวิธีที่จะจัดการกับส่วนหนึ่งของสมการใน {} วงเล็บที่ ข้อเสนอแนะใด ๆ

1
แสดงรูปจาก url ใน Excel
ฉันทำงานกับ Excel 2013 บางคนอาจรู้วิธีแสดงรูปภาพแทน URL ฉันมีรายการ URL และตามVLOOKUPสูตรที่ต้องการแสดงรูปภาพ ผ่านVLOOKUPผมพบ URL HYPERLINKที่แล้วผมใช้ ดังนั้นเมื่อฉันพิมพ์รหัสรายการใหม่ในช่องค้นหาฉันต้องการรูปภาพที่จะแสดง ฉันเหนื่อย: Sub Test() Dim Pic As Picture Application.ScreenUpdating = False With ActiveSheet.Range("k19") Set Pic = .Parent.Pictures.Insert(.Value) With .Offset(, -1) Pic.Top = .Top Pic.Left = .Left Pic.Height = .Height Pic.Width = .Width End With End With Application.ScreenUpdating = True …

1
วิธีเพิ่มความเร็วของโค้ดโดยใช้โครงสร้างข้อมูลแทนที่จะเป็นลูปต่อไป
ฉันได้รับการแก้ไขแล้วอื่น ๆ อีกหลายที่ใช้Application.IndexกับApplication.WorksheetFunction.Matchที่และเวลาในการดำเนินการประมาณ 7-8 วินาทีเพื่อมิลลิวินาทีลดลง แต่ฉันรู้สึกว่ายังมีห้องพักสำหรับการปรับปรุง ฉันควรใช้อาร์เรย์ด้วยIndexและMatch? ฉันได้รับคำสั่งให้ใช้Scripting.Dictionaryเช่นกัน แต่ฉันกำลังมองหาคนที่สามารถสาธิตวิธีการใช้งานได้ทันทีในสถานการณ์นี้ เพราะในหัวของฉันฉันต้องใส่พจนานุกรมด้วยการวนซ้ำก่อนที่ฉันจะสามารถใช้มันได้ดังนั้นมันจะไม่เหมือนกันในแง่ของความเร็ว? 'Production Quantity for Dashboard For i = 2 To Total_rows_Prod For j = 2 To Total_rows_Dash If ThisWorkbook.Worksheets("Prod. Qty.").Cells(i, 5) = ThisWorkbook.Worksheets("Dashboard").Cells(j, 1) Then ThisWorkbook.Worksheets("Dashboard").Cells(j, 4) = ThisWorkbook.Worksheets("Dashboard").Cells(j, 4) + ThisWorkbook.Worksheets("Prod. Qty.").Cells(i, 31) / ThisWorkbook.Worksheets("Prod. Qty.").Cells(i, 4) End If Next …

1
ส่งคืนค่าตามตัวแปรสามตัว
ฉันกำลังสร้างตารางที่ผู้ใช้เลือกสามตัวแปรจากรายการแบบหล่นลง (รายการตรวจสอบข้อมูล) ตัวแปรทั้งสามนี้เป็นตัวกำหนดราคาต่อตารางฟุตของผลิตภัณฑ์ ฉันต้องการที่จะทำให้ราคาถูกส่งกลับโดยอัตโนมัติเมื่อมีการเลือกทั้งหมดแล้ว ฉันมีตารางที่กำหนดราคาที่ควรส่งคืน แต่ไม่มีความคิดในการรวมทุกอย่างเข้าด้วยกันอย่างถูกวิธี ฉันเข้าใจว่านี่ไม่ใช่บริการการเขียนแมโคร (ฉันถือว่าเป็นวิธีที่ฉันต้องไป) แต่ฉันจะขอบคุณคำแนะนำหรือความคิดใด ๆ เกี่ยวกับวิธีที่ดีที่สุดในการรับสิ่งที่ฉันต้องการ หากต้องการคำอธิบายโดยละเอียดเพิ่มเติมของตัวแปรที่เป็นไปได้ทั้งหมดฉันสามารถให้ได้ แก้ไข นี่คือตาราง: ตาราง ฉันขอโทษฉันยังไม่สามารถนำเข้าสู่ Excel แต่นี่ควรให้ความคิดเกี่ยวกับจำนวนตัวแปรที่เกี่ยวข้อง ฉันวางแผนที่จะวางตารางไว้ในแผ่นงานที่แตกต่างกัน แก้ไข 2 อย่างไรก็ตามฉันใช้ Excel 2016

2
PowerPoint VBA - วิธีใส่แท็กในเซลล์เพื่อระบุ
ฉันพยายามทดสอบความสามารถอัตโนมัติของ MS PowerPoint โดยใช้ VBA สำหรับความต้องการของฉันเซลล์ตารางใด ๆ จะต้องทำเครื่องหมายด้วย ID ควบคุมและส่งกลับโดยใช้ ID นี้ อย่างไรก็ตามฉันไม่สามารถค้นหาวิธีที่เหมาะสมได้ คุณมีความคิดใด ๆ Dim slide As slide Dim t As Table Dim r As Integer Dim c As Integer Dim s As Shape Set slide = Application.ActivePresentation.Slides(1) Set t = slide.Shapes(1).Table Set s = t.Cell(1, 1).Shape ' t.Tags …

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

1
รับ Guid (ไม่ใช่ ID รายการ) ของข้อความ Outlook
ตามที่กล่าวไว้ในโพสต์นี้เป็นไปได้ที่จะคว้า entryID จากข้อความ Outlook แต่ปัญหาคือถ้าข้อความถูกย้ายไปยังโฟลเดอร์อื่น ID จะเปลี่ยนไป ดังนั้นฉันเดาว่าฉันต้องการ GUID แต่ฉันไม่รู้ว่าจะคว้าสิ่งนี้ผ่านแมโครใน Outlook ได้อย่างไร ใครสามารถช่วยฉันหาสิ่งนี้ได้บ้าง?

2
ฉันจะกรองเฉพาะค่าที่ปรากฏในคอลัมน์มากกว่าหนึ่งครั้งได้อย่างไร
ฉันมีข้อมูลต่อไปนี้เพื่อเริ่มต้นด้วย: Sr. No Conf. By Prod 1 A X 2 B Y 3 A Z 4 B X 5 A X 6 B Y 7 A Y 8 B M 9 A N 10 B O Prodฉันสนใจในคอลัมน์ Prodฉันต้องการค่าเหล่านั้นเท่านั้นที่ได้รับการทำซ้ำมากกว่าหนึ่งครั้งในคอลัมน์ นี่คือผลลัพธ์ที่ฉันต้องการหลังจากกรองข้อมูลแล้ว: Sr. No Conf. By Prod 1 A X 2 B Y …

1
MS โครงการเปลี่ยนสีข้อความในแถวตามฟิลด์สถานะ
ฉันกำลังมองหาที่จะเปลี่ยนสีของข้อความสำหรับทั้งแถวตามสิ่งที่ระบุในฟิลด์ "สถานะ" ฉันค้นหาฟอรัมอื่นและพบวิธีแก้ไขปัญหาที่ใกล้เคียงแล้ว แต่ไม่มีสิ่งใดที่ทำในสิ่งที่ฉันกำลังมองหา ฉันตระหนักถึงคุณสมบัติไฮไลท์และการจัดรูปแบบตามเงื่อนไข แต่ฉันไม่สามารถให้พวกเขาทำสิ่งที่ฉันต้องการได้ ฉันเขียนรหัส VB ​​เพื่อทำสิ่งนี้อย่างแน่นอนประมาณ 5 ปีที่แล้ว แต่ฉันเป็นสามเณรใช้เวลาประมาณ 5 วันในการเขียนรหัสพื้นฐานมากแล้วฉันก็หลงทางเมื่อฉันออกจากงานล่าสุด :-( ดังนั้นฉันต้องการ VBA ที่จะทำสิ่งต่อไปนี้: ถ้า Status = "Late" ให้สีข้อความในแถวเป็น "RED" ถ้า Status = "On Schedule" ให้สีข้อความในแถวเป็น "GREEN" หาก Status = "Future Task" ให้สีข้อความในแถวเป็น "BLACK" ถ้า Status = "Complete" ให้สีข้อความในแถวเป็น "GREY" ฉันชอบที่จะได้รับขั้นสูงและมีสิ่งต่อไปนี้: ถ้าสถานะ = "ตามกำหนดเวลา" และ% เสร็จสมบูรณ์คือ …

2
VBA คัดลอก / วางแถวไปยังแผ่นงานอื่นหากเซลล์มากกว่าเซลล์ในคอลัมน์อื่น
ใหม่สำหรับ VBA และทำให้สับสนพยายามที่จะคิดออกคำสั่งหลายรายการพร้อมกัน ฉันต้องการเปรียบเทียบค่าในคอลัมน์ K กับค่าในคอลัมน์ I และถ้าค่าในคอลัมน์ K มากกว่าให้คัดลอกแถวนั้นและวางลงใน Sheet9 เพื่อให้มีรายการอินสแตนซ์ทั้งหมดที่ K> I นี่คือสิ่งที่ฉันมี: Sub compareresult() Dim i As Integer For i = 8 To 500 If Cells(i, 11).Value > Cells(i, 9).Value Then ActiveCell.EntireRow.Select Selection.copy Sheets("Sheet9").range("A65000").End(xlUp).Offset(1, 1).PasteSpecial End If Next i End Sub ตอนนี้ฉันได้รับข้อความแสดงข้อผิดพลาด 400 ครั้ง แต่เมื่อถึงจุดหนึ่งระหว่างที่ฉันทำมันจะคัดลอกและวางค่าที่อยู่ด้านบนของกันและกันใน Sheet9 เพื่อที่จะจบลงด้วยการแสดงครั้งสุดท้าย …

1
Excel Vba (ปุ่ม onclick)
ฉันมีแผ่นงานที่มีคอลัมน์ "รหัสการทำงานชื่อวันที่ชื่อคำอธิบายสถานะ" รูปแบบทั้งหมดโดยทั่วไป code:4566, 4899, 4987, 4988, 4989 operation:X,Y,Z,X,Y title:XX,YY,ZZ,RR,XXY date: (the date column is not blank) name:Adam,Edward,Adam,Kris,Chris description: (some rows has data for this column, some are blank) status: active, inactive, closed ฉันกำลังพยายามคัดลอกแถวที่คอลัมน์ 'ชื่อ' ของพวกเขามีคอลัมน์ "อดัม" หรือ "เอ็ดเวิร์ด" และ "สถานะ" พร้อมกับ "ใช้งาน" ไปยังแผ่นงานใหม่ที่มีคอลัมน์ "รหัสชื่อวันที่ชื่อคำอธิบายสถานะ" เท่านั้น (ฉันไม่ต้องการคอลัมน์ 'การทำงาน' ในแผ่นงานใหม่) ณ …

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