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

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

1
ความพยายามรวบรวมข้อมูลจากหลายแถวเป็นแถวเดียว
ฉันเป็นมือใหม่ทั้งหมดเมื่อพูดถึงการเขียนมาโคร / VB สำหรับ Excel และฉันติดอยู่กับปัญหานี้จริงๆ นี่คือตัวอย่างของสิ่งที่ฉันมี และนี่คือสิ่งที่ฉันหวังไว้ ในขณะที่คุณสามารถดูฉันหวังที่จะรวมคะแนนของแต่ละบุคคลและความคิดเห็นของพวกเขากันreviewer_idสำหรับแต่ละขณะเดียวกันก็ดึงคะแนนรวมสำหรับแต่ละappl_id appl_idบางครั้งไม่มีความคิดเห็นสำหรับคะแนนซึ่งดูเหมือนจะทำให้ซับซ้อน ตารางนี้มีความยาวประมาณ 2K แถวดังนั้นการทำเช่นนี้ด้วยตนเองจึงไม่ดูเหมือนตัวเลือก

2
การย้ายข้อมูลเซลล์ที่เลือกใน excel ทางซ้ายหรือขวาโดยไม่ต้องใช้ cut + paste หรือคัดลอกและวาง ย้ายข้อมูลด้วยปุ่มลูกศรจะดีมาก
สวัสดีฉันอยากรู้วิธีเรียกใช้ VBA หรือมาโคร (หรือวิธีที่ง่ายกว่า) เพื่อเปลี่ยนค่าของการเลือกปัจจุบันเท่านั้น (แตกต่างจากเซลล์หนึ่งในหนึ่งแถวเป็นหลายเซลล์และเลือกข้ามแถว, คอลัมน์) ใน excel เป็น หนึ่งคอลัมน์ขวาหรือซ้ายหนึ่งคอลัมน์ กล่าวโดยย่อคือฉันกำลังเตรียมแผ่นพยากรณ์สำหรับการฝึกสถาปัตยกรรม มันทำงานในลักษณะเดียวกับโครงการ Microsoft ที่มีแถวของช่วงเวลาที่แสดงในคอลัมน์รายเดือนจำนวนมาก เมื่อไทม์ไลน์ของโครงการเปลี่ยนไปฉันต้องสามารถเลือกแถวของข้อมูลเซลล์เดียวหรือหลายเซลล์และย้ายข้อมูลที่เลือกไว้โดยคอลัมน์เดียวเท่านั้น มันจะเป็นการดีที่จะลบข้อมูลออกจากตำแหน่งเซลล์ก่อนหน้านี้ด้วย (ตัดและวางข้อมูลในสาระสำคัญเท่านั้น) ฉันไม่สามารถใช้การคัดลอกและวางได้เนื่องจากเป็นการทำซ้ำข้อมูล เลือกและลากบนขอบของกล่องขอบด้วยเคอร์เซอร์สี่ดาวใช้สูตรการเชื่อมต่อและการจัดรูปแบบ ดูรูปภาพที่แนบมา - ลองนึกภาพการจัดสรร 50% สองรายการในเดือน เม.ย. -19 และ พ.ค. -19 จะต้องเริ่มต้นในเดือนกรกฎาคม เพียงแค่ฉันต้องการเลือกเซลล์เหล่านั้นและย้ายข้อมูลเท่านั้น - ราวกับว่าใช้ปุ่มลูกศรขวา (หรือปุ่มลูกศรซ้าย) เพื่อย้ายข้อมูลเช่นเดียวกับ tetris หวังว่าจะได้ยินคำแนะนำของคุณ

1
VBA- รหัสดำเนินการและสร้างผลที่ต้องการ แต่แล้วเกิดข้อผิดพลาดในบรรทัด Exportasfixedformat
ฉันมีมาโครสำหรับส่งออกเวิร์กชีททั้งหมดเพื่อแยกไฟล์ PDF ในโฟลเดอร์ย่อยที่ระบุ เมื่อฉันรันมันจะสร้างไฟล์ PDF ในตำแหน่งที่ถูกต้องและมีชื่อว่า apporproately แต่แล้วข้อผิดพลาด - ข้อผิดพลาด 5 การเรียกขั้นตอนหรืออาร์กิวเมนต์ที่ไม่ถูกต้อง - มีแนวคิดใดบ้าง Sub SaveWorkshetAsPDF() Application.ScreenUpdating = False Dim ws As Worksheet Dim path As String Dim fol As String Dim name As String Dim concat As String Dim fdObj As Object path = ActiveWorkbook.path fol = "\PDFs\" Set …

1
ปุ่ม Microsoft Powerpivot ไม่ทำงาน
หวังว่าบางคนสามารถช่วยฉันด้วยปัญหา Powerpivot ที่แปลกประหลาดนี้ ฉันมีสมุดงานเล่มเดียวซึ่งไม่ได้ทำงานกับ Powerpivot มันมีรหัส VBA จำนวนมาก (ส่วนใหญ่เกี่ยวข้องกับการรักษาความปลอดภัยสมุดงาน) และการคลิกที่ปุ่ม Powerpivot ไม่มีผลใด ๆ เมื่อฉันเปิดเวิร์กบุ๊กการเพิ่ม Powerpivot จะไม่โหลด (ไม่มีแท็บ Powerpivot) และเมื่อฉันลากและวางเวิร์กบุ๊กลงในอินสแตนซ์ของ Excel ที่เปิดขึ้นมาอย่างอิสระ (ซึ่งเปิดแท็บ PP ไว้แล้ว) เพื่อเปิดหน้าต่างเมื่อมีการคลิก จนถึงตอนนี้ฉันได้ลองรีสตาร์ทและปิดใช้งานและเปิดใช้งาน Addp ของ Powerpivot อีกครั้ง รุ่น Powerpivot ของฉันคือ 10.50.4000.0 และฉันอยู่ใน Excel 2010

1
รหัส VBA สำหรับการเปลี่ยนข้อความพื้นหลังสำหรับข้อความใด ๆ ภายในเซลล์
ฉันกำลังพยายามเปลี่ยนสีเป็นสีเหลืองโดยขึ้นอยู่กับว่าข้อความใดอยู่ในคอลัมน์ D ฉันได้ตั้งค่าสีที่ต่างกัน 5 สีสำหรับเซลล์อื่น แต่ต้องใช้สิ่งนี้เพื่อขับสีเหล่านั้น ฉันสามารถใช้งานได้ถ้าฉันพูดว่า 'ใช่' เพราะเป็นค่าที่กำหนดล่วงหน้า อย่างไรก็ตามฉันต้องใส่ข้อความและตัวเลขต่าง ๆ เพื่อที่จะไม่ได้ท่อง ด้านล่างเป็นสิ่งที่ฉันได้รวบรวมในขณะนี้ แต่จำเป็นต้องเปลี่ยน 'ใช่' เพื่อให้ข้อความใด ๆ ภายในเซลล์นั้น Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal) Set MyPlage = Range("T8:T1000") For Each Cell In MyPlage Select Case Cell.Value Case Is = "Cancelled" Cell.EntireRow.Interior.ColorIndex = 8 Case Is = "Rejected" Cell.EntireRow.Interior.ColorIndex = 3 Case Is …

1
ทำให้ปุ่มคำสั่งมองเห็นได้ขณะที่เลื่อนแผ่นงานหรือไม่
มีอยู่เพื่อให้ปุ่มคำสั่งมองเห็นและในขณะที่คุณ scolling ลงแผ่นงานยาวคุณยังสามารถเห็นปุ่มเลื่อนด้วยแผ่นงานของคุณ? ฉันรู้ว่ามีช่องแช่แข็ง แต่ฉันต้องการสิ่งอื่นถ้าเป็นไปได้

1
สูญเสียอักขระเมื่อคัดลอกและวางลงในไฟล์แบตช์ผ่าน VBA
ขณะนี้ฉันกำลังใช้รหัส VBA ต่อไปนี้เพื่อคัดลอกและวางช่วงของข้อมูลในไฟล์ excel เพื่อสร้างไฟล์ Batch ฉันพบปัญหาต่อไปนี้: ใบเสนอราคาจะถูกวางไว้รอบเนื้อหาของเซลล์แต่ละรายการ ฉันสูญเสียการกลับมาของตัวละคร นี่คือข้อมูลของฉันที่ถูกคัดลอกแต่ละบรรทัดด้านล่างต้องคัดลอกในอีกบรรทัดหนึ่งในแบตช์ไฟล์: @ftp -i -s:"%~f0"&GOTO:EOF open ecggwprd.uhc.com if1**79 W88***3k bin put \\Nas00233pn\ACP_Finance_Ops\FTP\Ced.201602.zip /cedarhill/Ced.201602.zip !ping -n 30 0.0.0.0 > NULL CD /ced dir Q__C_ ไม่มีใครรู้ว่าฉันสามารถแก้ไขรหัส VBA ของฉันเพื่อแก้ไขรายการเหล่านี้ได้อย่างไร นี่คือสำเนารหัสของฉัน: Sub savebat() Dim wbSource As Workbook Dim wsSource As Worksheet Dim wbDest As Workbook Dim …

1
มาโครเพื่อเติมเซลล์จากคอลัมน์ตามลำดับเมื่อฉันคลิกที่ปุ่ม
ฉันมีปัญหามากมายในการพยายามคิดออก นี่คือเค้าโครงของฉัน: อย่างที่คุณเห็นฉันมี 2 ปุ่ม สิ่งที่ฉันต้องการให้แต่ละปุ่มทำคือ: ทุกครั้งที่ฉันคลิกYESมันจะแทรก a ลงYในเซลล์ในช่วงที่ระบุ หากฉันคลิกYESอีกครั้งระบบจะแทรกYเซลล์ในเซลล์ถัดไปโดยอัตโนมัติภายใต้เซลล์ก่อนหน้าในคอลัมน์เดียวกัน ถ้าผมคลิกมันก็จะยังคงลงคอลัมน์และแทรกNON วิธีทำให้เอาต์พุตของปุ่มให้ใช้เซลล์ฟรีถัดไปเสมอ

3
จัดรูปแบบข้อมูลใหม่ผ่านแมโคร excel 2010 หรือไม่
ฉันกำลังพยายามสร้างแมโครที่ให้ฉันเปลี่ยนข้อมูลที่ฉันได้รับจากลูกค้าเป็นข้อมูลที่ฉันสามารถนำเข้าสู่ระบบได้ ข้อมูลที่ฉันได้รับอยู่ในรูปแบบ: ฉันจะทำสิ่งนี้ผ่าน VBA Macro ได้อย่างไร ดังนั้นควรอ่านข้อมูลจากนั้นสร้างแผ่นงานใหม่พร้อมสำเนาของข้อมูลในรูปแบบที่ฉันสามารถใช้ได้ แบบนี้:

1
โครงการ VBA ทำงานได้ดีบนเครื่องกับ Outlook 2013 แต่ไม่ได้อยู่ในเครื่องที่ใช้ Outlook 2010
เครื่องทั้งสองเครื่องใช้งาน Windows 7 เวอร์ชัน 64 บิตโครงการนี้ได้รับการรวมเข้าด้วยกันอย่างเจ็บปวดฉันไม่ใช่โปรแกรมเมอร์ ฟังก์ชั่นของโครงการคือค้นหาอีเมลสำหรับสิ่งที่แนบมาโดยอัตโนมัติเมื่อมีการเตือนให้ตั้งไฟทุกคืนและดาวน์โหลดไฟล์แนบไปยังเส้นทางที่ระบุที่มีสตริงที่กำหนดโดยposรหัสสองบรรทัดเท่านั้น โดยทั่วไปมันแค่ตรวจสอบว่าชื่อไฟล์มีชื่อ / วลีที่ต้องการ ไฟล์ที่ฉันใช้งานมีการเปลี่ยนแปลงเล็กน้อยกับอีเมลทุกฉบับและในช่วงหลายปีที่ผ่านมา แต่มีคำสั่งเดียวเสมอ หากเมลเดิมunReadมันจะทำเครื่องหมายว่าเป็นreadไฟล์แนบทั้งหมดในแต่ละอีเมล ข้อแตกต่างเพียงอย่างเดียวคือเครื่องที่ใช้ Outlook 2010 จะมีรหัสอื่นที่ทำงานอยู่ ฉันวางรหัสนี้บนเครื่องกับ Outlook 2013 เพื่อดูว่ามันขัดแย้งกันหรือไม่ แต่มันก็ยังทำงานได้อย่างสมบูรณ์ รหัสต่อไปนี้ทำงานได้อย่างสวยงามบนเครื่องด้วย Outlook 2013 แต่ไม่ได้อยู่ในเครื่องด้วย Outlook 2010 โครงการคอมไพล์ได้ดีrunsแต่ไม่ดาวน์โหลดไฟล์ใด ๆ หรือทำเครื่องหมายอีเมลใด ๆ ว่ายังไม่ได้อ่าน นี่คือรหัสใน This Outlook Session Private WithEvents MyReminders As Outlook.Reminders Private Sub Application_Startup() Set MyReminders = GetOutlookApp.Reminders End …

0
การแก้ไขปัญหา - วิธีการทำมิรเรอร์สองเซลล์จากแผ่นงานที่แตกต่างกันใน Excel (2013) โดยใช้ VBA
ฉันกำลังทำงานกับการตั้งค่า VBA สำหรับไฟล์การติดตามปัญหาที่กว้างขวาง ฉันมีแผ่นงานหนึ่งแผ่นที่มีปัญหาทั้งหมดและจัดการได้ยาก ฉันมีแผ่นงานอีกแผ่นที่ออกแบบมาเพื่อนำเสนอผู้ใช้ด้วย 10 ลำดับความสำคัญสูงสุดสำหรับวันที่กำหนดอนุญาตให้พวกเขาอัปเดตรายการเหล่านั้นแล้วดึงข้อมูลปัญหาเพิ่มเติม เนื่องจากวิธีการที่ข้อมูลถูกมิเรอร์ฉันต้องการให้ผู้ใช้สามารถจัดการข้อมูลในชีตทั้งสองและให้มิร์เรอร์กับชีตอื่น ฉันพบจากคำถามอื่นบางข้อเสนอแนะและฉันสามารถทำให้มันทำงานตราบใดที่ฉันมีเพียงหนึ่งเซลล์มิเรอร์ แต่ทันทีที่ฉันเริ่มทำซ้ำรหัสเพื่อเพิ่มในเซลล์อื่น ๆ (มีประมาณ 200 เซลล์ที่จำเป็นต้องเป็น มิร์เรอร์) เซลล์ทั้งหมดหยุดการอัปเดต (รวมถึงเซลล์ที่ทำงานก่อนหน้านี้) ปัญหาอื่น ๆ ที่ฉันได้เห็นแม้กระทั่งก่อนที่ฉันจะเพิ่มเซลล์พิเศษที่มิเรอร์สายรหัสที่เกี่ยวข้องกับวิธีการที่แผ่นรายงานสิบรายการลำดับความสำคัญสูงสุด ฉันสร้างมาโครที่ใช้ชีตแรก (ยากที่จะเข้าใจ) และเรียงลำดับข้อมูลในลักษณะเฉพาะและฉันได้แนบมาโครนั้นกับปุ่มบนหน้าอื่น ๆ เมื่อฉันกดปุ่มมันจะเรียงลำดับข้อมูลในชีตแรกอย่างถูกต้อง แต่เซลล์ที่ถูกมิเรอร์ไม่เคยอัปเดต ดังนั้นฉันจำเป็นต้องรู้1)วิธีปรับรหัสของฉันเพื่อให้สามารถสะท้อนหลายเซลล์และ2)ทำอย่างไรเมื่อฉันเรียงลำดับแผ่นงานแรกโดยใช้ปุ่มการปรับปรุงข้อมูลในแผ่นงานที่สอง รหัสที่ใช้งานได้เมื่อฉันมีเซลล์มิเรอร์หนึ่งชุดเท่านั้นคือรหัสต่อไปนี้ที่อยู่ในรหัส Sheet 1: Private Sub Worksheet_Change_B2(ByVal Target As Range) Dim B2 As Range, B2_1 As Range Set B2 = Range("B2") Set B2_1 = …

2
รหัส VBA สำหรับการกรองคอลัมน์โดยใช้กล่องป้อนข้อมูล
ฉันกำลังมองหาเพื่อกรองคอลัมน์ตามรหัสที่ผู้ใช้ใส่ลงในกล่องอินพุต ฉันใช้รหัสต่อไปนี้: Sub Filter() ' ' Filter Macro Dim strName As String strName = InputBox(“What DMA would you like to search for?”) Selection.AutoFilter ActiveSheet.Range("$A$1:$AS$355969").AutoFilter Field:=3, Criteria1:="=*" & strName & “ * ”, Operator:=xlAnd End Sub แต่มันแสดงข้อผิดพลาดของคอมไพล์: ข้อผิดพลาดทางไวยากรณ์ใน Excel แมโคร มีใครช่วยฉันได้ไหม ขอบคุณ Dhivya S

1
วิธีการโทรหาช่วง namer โดยใช้ตัวแปรเพื่อกำหนดชื่อ
ตามเอกสารประกอบชื่อข้อความที่ยกมาใด ๆ สามารถกำหนดโดยตัวแปรถ้าฉันกำหนด Set xlsDataSource = Application.Workbooks("New_TOR_V1.xlsm").Names("MyRange").RefersToRange มันทำงานได้ตามที่คาดไว้ถ้าฉันใช้ Dim S as string S="MyRange" Set xlsDataSource = Application.Workbooks("New_TOR_V1.xlsm").Names(S).RefersToRange มันยังทำงานได้ดี แต่ใช้ Dim Arr() as string Arr(1)="MyRange" Set xlsDataSource = Application.Workbooks("New_TOR_V1.xlsm").Names(Arr(1)).RefersToRange ให้ข้อผิดพลาด และนอกจากนี้ยังมี Set xlsDataSource = Application.Workbooks("New_TOR_V1.xlsm").Names(Cstr(Arr(1))).RefersToRange ให้ข้อผิดพลาด ทำไมองค์ประกอบอาเรย์ทำให้เกิดข้อผิดพลาดและฉันจะแก้ไขได้อย่างไร ฉันจำเป็นต้องใช้อาร์เรย์หรือไม่

1
การเขียนโค้ด VBA เพื่อเติมลงในส่วนท้ายของช่วงซึ่งมีความยาวแตกต่างกันไป
ฉันกำลังเขียนแมโครเพื่อทำให้รายงานเสร็จสมบูรณ์โดยอัตโนมัติซึ่งมีโครงสร้างเรียงเป็นแนวเดียวกัน (เช่นเขตข้อมูลเดียวกันในคอลัมน์เดียวกันทุกเดือนหลังจากเดือน) อย่างไรก็ตามจำนวนระเบียนในรายงานจะเปลี่ยนจากเดือนหนึ่งไปเป็นเดือน ในการใช้ตัวบันทึกแมโครเพื่อเติมคอลัมน์ใดคอลัมน์หนึ่งมันสร้างรหัสนี้ขึ้นมา: Selection.AutoFill ปลายทาง: = ช่วง ("Z2: Z1092") ดูเหมือนว่ารหัสนี้จะใช้ได้เฉพาะกับรายงานที่ลงท้ายด้วยแถว 1092 มีวิธีแก้ไขรหัสนี้เพื่อให้อัปเดตแบบไดนามิกขึ้นอยู่กับความยาวของรายงานหรือไม่ ฉันคิดว่าถ้าฉันกำหนดตัวแปรที่เท่ากับแถวสุดท้ายของรายงานและใช้แทน 1,092 ในบรรทัดของรหัสนั้นที่จะทำเคล็ดลับ ฉันยังใหม่กับการใช้ VBA และชื่นชมความช่วยเหลืออย่างมาก

1
มาโครที่จะเพิ่มหมายเลขที่ป้อนลงในที่อยู่แฟกซ์
ฉันมีเครื่องโทรสารที่ใช้ในการส่งแฟกซ์ ซึ่งสามารถทำได้ผ่าน Outlook โดยการจัดรูปแบบที่อยู่เป็นเช่นนั้น FAX=FaxNumber@faxfinder.domain.local ฉันได้สร้างมาโครด้านล่างที่จะปรากฏกล่องและขอหมายเลขแฟกซ์จากนั้นใส่หมายเลขนั้นในฟิลด์ถึงของอีเมล มีวิธีสำหรับฉันที่จะต่อท้ายส่วนที่เหลือของที่อยู่กับหมายเลขใด ๆ ที่ป้อน? ฉันต้องการทำให้ผู้ใช้ง่ายขึ้นดังนั้นพวกเขาจึงไม่จำเป็นต้องจดจำที่อยู่ส่วนที่เหลือ Public Sub CreateNewMessage() Dim objMsg As MailItem Set objMsg = Application.CreateItem(olMailItem) FaxTo = InputBox("Please enter fax number") With objMsg .To = FaxTo .Display End With Set objMsg = Nothing End Sub

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