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

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

0
Excel VBA อัพเดทข้อมูลกราฟ
ฉันมีแผนภูมิหลายชุดที่อ้างอิงชุดข้อมูลหนึ่งชุด แผนภูมิแต่ละชุดมีจำนวนชุดที่แตกต่างกัน แต่ละชุดอ้างถึงแถวหนึ่งของชุดข้อมูลสำหรับคอลัมน์จำนวนหนึ่ง (เช่น A1: Z1) ในระหว่างการอัปเดตฉันต้องการเปลี่ยนข้อมูลสำหรับทุกซีรี่ส์ตาม 1 คอลัมน์ (เช่น A1: Z1 - & gt; B1: AA1) ตัวเลือกคอลัมน์สำหรับทุกซีรี่ส์จะเหมือนกัน แนวทางของฉันตอนนี้คือการดูแผนภูมิทั้งหมดในแต่ละแผนภูมินับจำนวนชุดสำหรับแต่ละชุดบันทึกหมายเลขแถวและอัปเดตด้วยคอลัมน์ใหม่ ปัญหาของฉันอยู่ที่การดึงหมายเลขแถว ฉันพยายามทำ foo = ActiveChart.SeriesCollection(1).Values ด้วยความตั้งใจที่จะดึงหมายเลขแถวออกจากสตริง (ซึ่งยอมรับว่าไม่สวยงาม) แต่คุณสมบัติค่าไม่ส่งคืนสตริงแม้ว่าเมื่อตั้งค่ามันจะใช้เวลาในสตริงเช่น: ActiveChart.SeriesCollection(1).Values = "=Data!$A$1:$Z$1" วิธีการที่ดีที่สุดจะเป็นอย่างไร ฉันควรใช้ช่วงที่ตั้งชื่อแบบไดนามิกสำหรับแต่ละซีรี่ส์หรือไม่ ขอบคุณ.

1
รับที่อยู่เซลล์ Excel ของค่าที่ใกล้เคียงที่สุดในช่วงเดียวกัน
ฉันมีสเปรดชีตขนาดใหญ่ (& gt; 15000 แถว) ที่มีชื่อ บริษัท สถานที่หมายเลขการผลิตและละติจูด / ลองจิจูดของสถานที่ ตารางตัวอย่าง ฉันกำลังพยายามเปรียบเทียบละติจูดและลองจิจูดแต่ละพิกัดกับคนอื่น ๆ ทั้งหมดเพื่อหาค่าที่อยู่ภายใน 0.01 องศา มาเรียกคอลเล็กชันตำแหน่งเหล่านี้ว่า "พื้นที่" จากนั้นฉันต้องการได้รับยอดขาย / วันและยอดรวม / วันสำหรับแต่ละพื้นที่เหล่านั้น ฉันพยายามโจมตีเรื่องนี้โดยพยายามรับที่อยู่เซลล์ของตำแหน่ง lat / long ทั้งหมดที่อยู่ภายในความต้องการ 0.01 องศาของแถวที่มีอยู่โดยใช้สูตรดังนี้: =CELL("address",INDEX(AB:AB,MATCH(MIN(ABS(AB:AB-[@Lat])),ABS(AB:AB-[@Lat]),0))) หรือสูตรที่ซับซ้อนมากขึ้น: =ABS(RANK([@Lat],AB:AB)-MATCH(MIN(LARGE(AB:AB,ROW(INDIRECT("1:"&COUNT(AB:AB)-2)))-LARGE(AB:AB,ROW(INDIRECT("1:"&COUNT(AB:AB)-2))+2)),LARGE(AB:AB,ROW(INDIRECT("1:"&COUNT(AB:AB)-2)))-LARGE(AB:AB,ROW(INDIRECT("1:"&COUNT(AB:AB)-2))+2),0)-1)<=1 โดยที่ AB คือคอลัมน์ Lat แต่พวกเขากลับ # N / A หรือ 0 บางทีฉันต้องใช้สคริปต์ VBA เพื่อทำซ้ำผ่านการเปรียบเทียบ lat / long …


0
เคล็ดลับในการเพิ่มความเร็วในการคัดลอก / วางภาพ
นี่เป็นโครงการแรกของฉันที่ใช้ VBA ฉันมีรหัส (ดูด้านล่าง) ที่อ่านว่ามีตัวเลขบนแผ่นงานหรือไม่ หากเป็นเช่นนั้นรหัสจะเรียกแมโครเพื่อคัดลอกรูปภาพต้นฉบับจากแผ่นงานอื่นวางลงบนแผ่นงานใหม่และเปลี่ยนชื่อ / เปลี่ยนขนาด / วางกึ่งกลางรูปภาพที่วางในเซลล์ ปัญหาคือฉันสามารถบอกได้ว่ารหัสนี้ทำงานช้า ฉันรู้ว่าใช้ ".select" รหัสช้าลงมาก แต่ฉันไม่รู้ว่ามีวิธีแก้ไขสิ่งที่ฉันต้องทำหรือไม่ นี่คือโค้ดที่ใช้งานได้ (แม้ว่าช้า) ที่ฉันมี (เลื่อนไปด้านล่างสำหรับรูปอ้างอิง) นี่คือรหัสแรกที่ทดสอบตัวเลขและเรียกมาโคร: Sub xGridA_Pic_Setup() Application.ScreenUpdating = False Application.Calculation = xlCalculationManual If Evaluate(WorksheetFunction.CountIf(Worksheets("Rent Grid A").Range("D1:H1"), "1")) < 1 Then Else Call xGridA_Comp1 End If If Evaluate(WorksheetFunction.CountIf(Worksheets("Rent Grid A").Range("D1:H1"), "2")) < 1 Then Else …

1
ข้อผิดพลาดรันไทม์ผิดปกติใน VBA โดยใช้การคัดลอกแปะรูปร่าง
ฉันอยากรู้เกี่ยวกับข้อผิดพลาดรันไทม์ 2 VBA สิ่งที่อยากรู้คือ: 9 จาก 10 ครั้งรหัสทำงานได้อย่างสมบูรณ์แบบ แต่ในบางครั้งหนึ่งใน 2 ข้อผิดพลาดรันไทม์ต่อไปนี้จะปรากฏขึ้นเป็นครั้งคราว Run-Time error '1004': Paste method of Picture object failed Run-time error -214724809 (80070057): The index into the specified collection is out of bounds. ฉันไม่สามารถระบุการพึ่งพาใด ๆ เมื่อมันจะหรือไม่ปรากฏ นี่คือสิ่งที่ฉันทำ: คลิกที่ปุ่มใน Excel ซึ่งจะทำตามขั้นตอนต่อไปนี้ผ่าน VBA สร้างแผ่นงานใหม่ 'Detailinterview' คัดลอกโลโก้จากแผ่นข้อมูล วางลงในแผ่นงาน 'Detailinterview' นี่คือรหัสของฉัน Public Const …

0
dylib บิวด์พา ธ กับเวลารันไทม์ (LC_LOAD_DYLIB?)
จาก อะไรคือความสำคัญของชื่อ macOS Mach-O dylib LC_ID_DYLIB หรือ install_name? ฉันเข้าใจว่า LC_ID_DYLIB กำหนดเส้นทางที่จะหา dylib ที่ runtime ซึ่งไม่เหมือนกับเส้นทางสร้างของ dylib ฉัน: otool -L /usr/local/lib/libTest.dylib ผลตอบแทน: cmd LC_LOAD_DYLIB cmdsize 48 name /usr/lib/libc++.1.dylib (offset 24) time stamp 2 Wed Dec 31 21:00:02 1969 current version 400.9.4 compatibility version 1.0.0 Load command 10 cmd LC_LOAD_DYLIB cmdsize 56 …

1
รหัส VBA ซ่อน / ยกเลิกการซ่อนอย่างต่อเนื่องโดยอัตโนมัติ
ฉันต้องซ่อน / ยกเลิกการซ่อนแถวเนื่องจากมีการอัปเดตค่า ตอนนี้รหัสของฉันจะซ่อนอัตโนมัติเมื่อค่ากลายเป็นศูนย์ แต่ถ้าฉันป้อนค่ามันจะไม่ยกเลิกการซ่อนอัตโนมัติ Private Sub Worksheet_Calculate() Dim LastRow As Long, c As Range Application.EnableEvents = False On Error Resume Next For Each c In Range("F10:F56") If c.Value = 0 Then c.EntireRow.Hidden = True ElseIf c.Value = 1 Then c.EntireRow.Hidden = False End If Next On Error GoTo 0 …

1
ย้ายข้อมูลในคอลัมน์เป็นแถวลงด้านล่าง
ฉันกำลังทำงานกับโครงการ Excel VBA ฉันมีข้อมูลในไฟล์ excel เช่นนี้ (ตัวอักษรแต่ละตัวในแต่ละเซลล์) ฉันมีหลายบรรทัดเช่นนี้และแต่ละบรรทัดจะมีข้อมูลใน 6 เซลล์แรกแน่นอนโดยมีจำนวนตัวแปร 2 เซลล์ต่อจากนั้น a b c d e f g h ฉันเจ k l m n o p q r s t ฉันต้องการแปลงเป็น: a b c d e f g h i j k l m n o p q r …
vba 

2
ฉันจะเขียนแมโครใน Outlook 2010 เพื่อตั้งค่าคุณสมบัติโฟลเดอร์ทั้งหมดเป็น“ ดูรายการทั้งหมด” ได้อย่างไร
ฉันจะเขียนแมโครเพื่อตั้งค่าคุณสมบัติโฟลเดอร์ทั้งหมดเป็น "ดูรายการทั้งหมด" ได้อย่างไร ฉันมีหลายร้อยโฟลเดอร์และโฟลเดอร์ย่อยและจำเป็นต้องตั้งค่าโฟลเดอร์เพื่อดูรายการทั้งหมดและฉันไม่สามารถหาวิธีเขียนแมโครได้ ในที่สุดก็ตัดสินใจว่าฉันต้องการความช่วยเหลือ นี่ควรเป็นการตั้งค่าในมุมมองที่คล้ายกับการตั้งค่าเริ่มต้นที่เก็บถาวร

2
เดือนและวันที่จะถูกสลับไปเรื่อย ๆ เมื่อรัน VBA
ฉันมีคอลัมน์บนแผ่นงานคอลัมน์ F ซึ่งเต็มไปด้วยวันที่ ตอนนี้ฉันต้องการวันที่เหล่านี้ในรูปแบบ "dd, mm, yyyy" แต่บางครั้งพวกเขาอยู่ในรูปแบบข้อความรูปแบบเรา / อาร์เมเนียในข้อมูลต้นฉบับ เหตุใดฉันจึงใช้แมโครเพื่อแปลงในรูปแบบที่ถูกต้องมันจะเปลี่ยนวันที่และเดือนเป็นบางครั้ง แต่ถ้าฉันทำด้วยตนเองจะไม่มีข้อผิดพลาดเกิดขึ้น กำลังใช้ค่าการวางเพื่อรับข้อมูลในแผ่นงานของฉันและนี่คือรหัสของฉัน มันแสดงเดือนที่ถูกต้องสำหรับรูปแบบ dd / mmm / yyyy แต่สลับเดือนและวันที่ Range("F2").Select Range(Selection, Selection.End(xlDown)).Select Selection.NumberFormat = "dd/mmm/yyyy" Selection.TextToColumns Destination:=Range("F2"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _ :=Array(1, 4), TrailingMinusNumbers:=True Selection.NumberFormat = "dd/mm/yyyy" ใช้เซลล์ F2 วันที่ 9 …

2
ละเว้นฟิลด์ข้อความว่างเปล่า
ฉันยังคงได้รับข้อยกเว้น cast เมื่อรันรูทีนย่อยใน userform มันรับรู้ค่า Null เมื่อมันอ่านtxtMileage.text = ""และส่งข้อผิดพลาดเพราะมันพยายามที่จะตรวจสอบว่าค่ามากกว่า 300 If btnYes.Checked = True And txtMileage.Text > 300 Then MsgBox("Distance Exceeds 300 Miles") txtMileage.Focus() Exit Sub ฉันต้องการให้ละเว้นการตรวจสอบค่าเมื่อbtnNo.checked = trueและtxtMileage.text = "" ความคิดใด ๆ Private Sub cmdCalculate_Click(sender As Object, e As EventArgs) Handles cmdCalculate.Click If btnNo.Checked = False And btnYes.Checked = …
vba 

0
Excel, แมโครเลื่อนลงหนึ่งแถวจากนั้นลบแถว
ฉันพยายามล้างแถวที่ซ้ำกัน ข้อมูลของฉันอยู่ในตารางโดยใช้ตัวกรอง ฉันลองใช้คุณสมบัติ Excel เพื่อลบรายการที่ซ้ำกัน แต่ได้รับข้อผิดพลาดต่อไปนี้ ไม่สามารถดำเนินการให้เสร็จสมบูรณ์ คุณกำลังพยายามเปลี่ยนส่วนของแถวหรือคอลัมน์ตารางในแบบที่ไม่ได้รับอนุญาต สิ่งนี้อาจเกิดขึ้นเมื่อพยายามจัดเรียงเซลล์ภายในตารางที่มีผลต่อเซลล์ตารางอื่นในลักษณะที่ไม่คาดคิด ดังนั้นฉันได้สร้างมาโครฉันสามารถเลือกแถวด้วยตนเองได้แล้วแมโครของฉันจะลบแถวนั้น สิ่งที่ฉันต้องการคือแมโครเพื่อเลื่อนหนึ่งแถวลงลบแถวนั้นแล้วทำอีกครั้ง ฉันจะทำให้มันเป็นเช่นนั้นได้อย่างไร นี่คือสิ่งที่ฉันมี Sub DeletRow() ' ' DeletRow Macro Selection.Delete Shift:=xlUp End Sub Sub moveselection() End Sub

1
ไม่สามารถเพิ่ม CubeField / PivotField เป็นเขตข้อมูลใน VBA
ฉันกำลังทำงานกับมาโครที่ยาวมากสำหรับงานของฉันและฉันเพิ่งจะเสร็จ แต่นี่เป็นส่วนสุดท้ายและไม่ว่าฉันจะทำอะไรฉันก็ดูเหมือนจะไม่สามารถหาทางแก้ไขได้ ใน PivotTable นี้ฉันต้องมี "ผู้จัดการ" เป็นคอลัมน์และทุกอย่าง (เช่นทุกเดือน) ในส่วนค่าโดยมี "ค่า" เป็นแถว หลังจากทำการแก้ไขมันดูเหมือนว่าฟิลด์ทั้งหมดที่ลงทะเบียนเป็น CubeFields แทนที่จะเป็น PivotFields เมื่อฉันเรียกใช้งานนี้ทันทีที่ได้รับการ. Omentation = xlDataField มันจะพ่น "ข้อผิดพลาดรันไทม์ 5 ... การเรียกหรือการโต้แย้งของกระบวนการไม่ถูกต้อง" ฉันต้องตรวจสอบให้แน่ใจว่า DataFields เหล่านั้นมีค่าเฉลี่ยและอยู่ในรูปแบบตัวเลขเฉพาะ ไม่มีอะไรที่ฉันทำงานและคำแนะนำ / แก้ไข / การแก้ปัญหาใด ๆ ที่จะได้รับการชื่นชมอย่างมาก! ด้านล่างคือมาโครและลิงค์ดาวน์โหลดไปยังไฟล์เพื่อทำการแก้ไข Dim pvtTable As PivotTable Dim cubField As CubeField Dim i As Long Dim cubName As …

1
วิธีการจัดรูปแบบเซลล์ระหว่างสองวันด้วยสีตามค่าใน vba
(ขออภัยหากคำถามนี้ยากที่จะเข้าใจฉันไม่สามารถโพสต์ภาพได้) ฉันได้พยายามหาวิธีแก้ปัญหาสำหรับออนไลน์นี้ แต่ยังไม่ได้โชคดี โดยหลักการแล้วฉันต้องการใช้การจัดรูปแบบตามเงื่อนไขเพื่อเน้นแต่ละเซลล์ภายในแถววันที่ระหว่างวันที่สองวัน มีปัญหาหนึ่ง .. ฉันต้องการให้สีถูกระบุโดยค่าที่อยู่ในเซลล์อื่น .. หากสิ่งนี้สามารถทำได้โดยใช้โมดูลแล้วเยี่ยมมาก! นั่นคือฉันได้แทรกแต่ละวันในปฏิทินในแนวนอนข้ามสเปรดชีตจาก F2 ตลอดทั้งปี IF C2 = 01/12/14 & D2 = 24/12/14 และ E2 = 3. เซลล์ทั้งหมดระหว่างวันที่ของ C2 และ D2 จะเติมด้วยสีแดง .. เช่นเดียวกันกับ IF C3 = 01/05/14 & D3 = 05/05/14 และ E3 = 2 เซลล์จะถูกเติมด้วยสีฟ้า ขอบคุณ

1
วิธีสร้าง sendkeys มาโครลำดับเชิงเส้นของการทำงาน
Range ("D5").Select ActiveCell.Resize(1, 25).Select SendKeys ("%y1"), True 'Alt+Y1 SendKeys ("%y2"), True 'Alt+Y2, Activates third part add-in SendKeys ("~"), True 'Enter, initiates the merge add-in function Range ("D6").Select ActiveCell.Resize(1, 25).Select SendKeys ("%y1"), True 'Alt+Y1 SendKeys ("%y2"), True 'Alt+Y2, Activates third part add-in SendKeys ("~"), True 'Enter, initiates the merge add-in function …

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