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

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

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

3
รายการเซลล์ที่ไม่ว่างใน Excel ขึ้นอยู่กับคอลัมน์ที่อยู่ติดกัน
ให้คอลัมน์ A และ B ฉันต้องการแสดงรายการ A-values ​​ที่มี B-cell ที่ไม่ว่างในแถวในคอลัมน์ C: A B C One Two Two x Four Three Four x ... สิ่งที่ดีที่สุดที่ฉันเคยได้รับคือ {=INDEX(A1:A4;MATCH(TRUE;B1:B4<>"";0))} ซึ่งให้ "สอง" ใน C1 แต่ฉันจะดำเนินการต่อได้อย่างไร หมายเหตุ:ปัญหาของฉันในเวอร์ชันที่ง่ายขึ้น: ในความเป็นจริงมีหลายคอลัมน์เช่น B ดังนั้นการกรองจึงไม่ใช่ตัวเลือก ยิ่งไปกว่านั้น B และ C ไม่ได้อยู่ในชีตเดียวกันและฉันต้องการให้ C-ชีตอัปเดตโดยอัตโนมัติเมื่อใดก็ตามที่ฉันแก้ไข B-ชีตดังนั้นการคัดลอกและวางก็ใช้ไม่ได้

1
การคัดลอกช่วงโดยใช้เกณฑ์ Combo Box
ฉันพยายามที่จะคัดลอกช่วงที่ตรงกับสองเกณฑ์จากสองกล่องคำสั่งผสมบนแบบฟอร์มผู้ใช้ ComboBox1 มีเกณฑ์ 1 สาขา ComboBox2 มีเกณฑ์ 2 ไตรมาส คอลัมน์Aต้องตรงกับเกณฑ์สาขาและแถว1ต้องตรงกับเกณฑ์ไตรมาส ฉันไม่สามารถใช้รหัสได้อย่างถูกต้อง เพียงคัดลอกข้อมูลจากคอลัมน์2และไม่ได้ตรวจสอบทั้งแถวสำหรับเกณฑ์ไตรมาส ตัวอย่างเช่นถ้าฉันเลือกสาขาเพิร์ลและไตรมาสที่ 1 รหัสควรคัดลอก "แอปเปิ้ล" และ "8" นี่คือรหัส: Private Sub CommandButton1_Click() Dim LastRow As Long, i As Long, ws2 As Worksheet With Worksheets("Sheet1") LastRow = .Range("A" & .Rows.Count).End(xlUp).Row For i = 2 To LastRow If .Cells(i, 1) = ComboBox1 …

2
String Manupulation ใน VBA
ฉันมีคอลัมน์เดียวที่ต้องแยกเป็นหลายคอลัมน์เช่น Text-to-Column ใน excel อย่างไรก็ตามมีความท้าทายเล็กน้อย ตัวคั่นธรรมดาจะไม่ทำงาน พิจารณาสตริงด้านล่าง Original: Domain\Domain Admins Domain2\User Group Domain3\Developers .....(And so on) Required: Domain\Domain Admins | Domain2\User Group | Domain3\Developers .....(And so on) ไพพ์ในสตริงที่ต้องการหมายความว่าต้องแยกที่นี่และคัดลอกไปยังคอลัมน์ถัดไปตามความยาวของสตริง ฉันมีรายการในคอลัมน์ A ที่มี 506 แถว ฉันใช้สูตรต่อไปนี้เพื่อตรวจสอบการเกิดขึ้นของ "\" ฉันคอลัมน์ B นับช่วงตั้งแต่ 0-66 =LEN(A2)-LEN(SUBSTITUTE(A2,"\","")) ฉันต้องการความช่วยเหลือในการเขียนโค้ดตามตรรกะ ค้นหา "\" ในสตริง ค้นหาช่องว่างก่อน "\" และแยก ฉันใช้รหัสต่อไปนี้ แต่ไม่ได้มีวัตถุประสงค์ Range("A1:A506").Select …

1
ตัวกรองข้อมูลคอลัมน์
ฉันมีคอลัมน์ข้อมูลที่ฉันต้องการ 'กรอง' ตัวกรองนี้มีองค์ประกอบที่แตกต่างกันสองส่วน ขั้นตอนที่ 1: เลื่อนลงไปตามคอลัมน์ข้อมูล ระบุช่องว่างในบล็อกของข้อมูล ช่องว่างน้อยกว่าค่าเซลล์ที่เสนอชื่อจะถูกเติมด้วยค่า 1 ขั้นตอนที่ 2: เลื่อนลงมาตามคอลัมน์ข้อมูลเดียวกันกับขั้นตอนที่ 1 ระบุกลุ่มข้อมูลที่ประกอบด้วยจำนวนแถวที่ต่ำกว่าค่าเซลล์ที่เสนอ บล็อกของข้อมูลที่มีขนาดเล็กกว่าค่าเซลล์ที่ระบุจะถูกลบ ฉันได้สร้างมาโครที่เติมช่องว่างในกลุ่มข้อมูลน้อยกว่าค่าเซลล์ที่แน่นอน (เซลล์ (1, 15) .Value) ตามที่แสดงด้านล่าง นี่คือสิ่งที่ฉันมีจนถึงตอนนี้ฉันเริ่มเขียนแมโครสำหรับขั้นตอนที่สอง แต่ไม่สามารถผ่านข้อผิดพลาดทางไวยากรณ์ได้ ที่แสดงด้านล่างนี้เป็นตัวอย่างของข้อมูลดิบและข้อมูลที่ถูกกรอง ข้อผิดพลาดทางไวยากรณ์คือสิ่งหนึ่งฉันกำลังดิ้นรนกับวิธีการดำเนินขั้นตอนที่สองดังนั้นความช่วยเหลือจะได้รับการชื่นชม ไชโย Option Explicit Sub FillInTheBlanks() ' ' FillInTheBlanks Macro ' 'Declare integers and decimal characters Dim iCol As Long, Last As Long, i As Long …

1
ใน Excel ฉันวาง URL จำนวนมาก แต่ไม่ใช่ลิงก์สด - ฉันจะแปลงเป็นกลุ่มเป็นลิงก์สดได้อย่างไร
ใน Excel ฉันวาง URL จำนวนมากลงในคอลัมน์ อย่างไรก็ตามมันไม่ใช่ลิงค์สดหลังจากการวาง ฉันจะแปลงเป็นกลุ่มทั้งหมดให้เป็นลิงก์แบบทันทีได้อย่างรวดเร็ว

3
ล็อคตัวเองอย่างชาญฉลาดจากตัวแก้ไข VBA ของ Excel ในแผ่นงานของฉัน
ฉันทำงานใน Microsoft Excel 2010 ฉันกำลังสร้างแผ่นงานที่คาดเดายากสำหรับคนอื่นที่ไม่ใช่ฉันที่ใช้มัน หากต้องการแก้ไขข้อมูลในแผ่นงานฉันใช้ userform ที่ไม่สามารถออกหรือย้ายไปไหนมาไหนได้ userform นี้จะเปิดขึ้นเมื่อเริ่มต้นของสมุดงาน สิ่งที่ฉันจำไม่ได้ก็คือเมื่อ userform เปิดฉันไม่ได้รับอนุญาตให้แก้ไข VBA เพื่อแก้ไขรหัสสำหรับชีตและ / หรือหนังสือ นี่เป็นปัญหาเนื่องจากรหัสสำหรับแผ่นงานไม่เสร็จสมบูรณ์ TL; DR: ฉันเป็นคนงี่เง่าและได้สร้างรูปแบบผู้ใช้ที่ไม่สามารถเคลื่อนย้ายได้โดยไม่ต้องมีปุ่ม 'ยกเลิก' หรือ 'สิ้นสุด' ที่เปิดเมื่อเริ่มต้นแผ่นงานและป้องกันไม่ให้ฉันเปิดตัวแก้ไข VBA ของ Excel ต้องการความช่วยเหลืออย่างยิ่ง

2
การแปลง / แปลงผลรวม (A1: D1) เป็น A1 + B1 + C1 + D1 ใน Excel
ดังนั้นสถานการณ์คือสิ่งนี้ฉันต้องการทราบว่ามีวิธีการแปลงผลรวมของช่วงของเซลล์เป็นผลรวมจากการเพิ่มแต่ละเซลล์แยกจากกันตามที่แสดงในชื่อเรื่อง ตัวอย่างเช่นสมมติว่าคนมีการคำนวณนี้ในเซลล์E1 , E1 = SUM(A1:D1)และต้องการที่จะแยกมันออกเป็นผลรวมของเซลล์ส่วนประกอบแยกเหมือนในE1 = A1 + B1 + C1 + D1 นอกจากนี้หากเป็นการดีถ้ามีคนระบุวิธีทำเช่นนี้สำหรับช่วงของเซลล์เช่นในกรณี: E1 = SUM (A1:D2)การแปลงเป็นE1 = A1 + B1 + C1 + D1 + A2 + B2 + C2 + D2 แก้ไข: มีคนแนะนำว่าฉันใช้ VBA และฉันก็คิดเช่นกัน หากใครมีคำแนะนำเกี่ยวกับเรื่องนี้ก็จะได้รับการชื่นชมอย่างมาก (ฉันไม่ดีในการเขียนโปรแกรมใน VBA แม้ว่าฉันรู้พื้นฐานและฉันจะลองด้วยตัวเอง

1
วิธีเปิดใช้งานแมโครในฮาร์ดไดรฟ์ภายนอก
ฉันมีภายนอกฮาร์ดไดรฟ์ที่ฉันได้แมปในประเทศไปยังe:\ไดรฟ์ มีโฟลเดอร์ย่อยที่มีแผ่นงาน Excel พร้อมมาโครที่ฉันไม่สามารถเรียกใช้ได้ ในFile->Options->Trust Center->Trust Center Settingsผมได้ตรวจสอบแล้วและจากนั้นพยายามที่จะAllow Trusted Locations on my network (not recommended) Add new locationการคลิกAdd new locationปุ่มนี้จะเป็นการแสดงกล่องโต้ตอบซึ่งฉันสามารถป้อนเส้นทาง (เช่นe:\mySubfolder) แต่เมื่อฉันคลิกOKฉันได้รับข้อความแสดงข้อผิดพลาดนี้: เส้นทางที่คุณป้อนไม่สามารถใช้เป็นตำแหน่งที่เชื่อถือได้เพื่อความปลอดภัย เลือกตำแหน่งที่ตั้งอื่นหรือโฟลเดอร์เฉพาะ แน่นอนฉันไม่ต้องการเลือกตำแหน่งอื่นเนื่องจาก Excels ของฉันอยู่ในฮาร์ดไดรฟ์ ดังนั้นมีอย่างอื่นที่ฉันสามารถทำเกี่ยวกับมันได้หรือไม่


1
ไม่สามารถแก้ไขข้อมูลในแผ่นข้อมูลใน Ms Access 2013 - รับข้อขัดแย้งในการเขียน
ฉันได้รับมอบหมายให้แปลงโครงการ ADP เก่าเป็นสิ่งที่ Access 2013 สามารถจัดการได้ ฉันได้นำเข้าฟอร์มและ VBA ทั้งหมดแล้วเชื่อมโยงตารางอีกครั้งและเปลี่ยนการเชื่อมต่อเป็นการเชื่อมต่อ ODBC ดูเหมือนว่าทุกอย่างส่วนใหญ่จะทำงานได้ดียกเว้นแผ่นข้อมูลในฟอร์มย่อยในฟอร์มเดียว แผ่นข้อมูลเติมอย่างถูกต้อง แต่ฉันไม่สามารถแก้ไขค่าในแผ่นข้อมูลเมื่อฉันทำการเปลี่ยนแปลงไปยังเขตข้อมูลเดียวที่แสดงฉันได้รับ "ข้อผิดพลาดการเขียนข้อขัดแย้ง" ตารางที่เชื่อมโยงกับแผ่นข้อมูลไม่มีเขตข้อมูลบิตใด ๆ มีคีย์หลักและเขตข้อมูลที่ฉันกำลังแก้ไขเป็นจำนวนเต็ม เหตุใดฉันไม่สามารถแก้ไขฟิลด์นี้และฉันจะแก้ไขปัญหา / แก้ไขได้อย่างไร

2
Add-in ของ Excel ไม่โหลดเมื่อเปิด Excel จาก VBA
ฉันใช้ excel reg-ex add-inและทำงานได้ดีปัญหาเดียวที่มันไม่โหลดเมื่อ excel เริ่มต้นโดย VBA ฉันเป็นมาโครใน word ในการรวบรวมข้อมูลบางอย่างใน Word และคัดลอกไปยัง excel อันนี้เริ่ม excel ผลลัพธ์ที่ได้ แต่ฉันต้องรีสตาร์ท excel เพื่อให้สามารถใช้ Add-in ได้ (เปิดใช้งานในตัวเลือก แค่ไม่โหลด) ฉันลองมาโครอีกอัน: เพิ่งเปิด excel และสร้างสมุดงานใหม่และมันก็มีปัญหาเดียวกัน ฉันมี Add-in บุคคลที่สามนี้เท่านั้นดังนั้นฉันจึงไม่สามารถเปรียบเทียบกับคนอื่นได้ ความคิดใด ๆ

2
ฟังก์ชัน Excel VBA สำหรับการค้นหาค่าและรูปแบบ
ฉันต้องการฟังก์ชั่นที่กำหนดเองเพื่อค้นหาทั้งค่าของเซลล์และคัดลอกรูปแบบของแหล่งที่มา ฉันมีรายการของค่าในสองคอลัมน์ ที่แรกเป็นจำนวนเต็มและคอลัมน์ที่สองคือค่าข้อความที่สอดคล้องกัน ตัวอย่างเช่น: AB --- ---------- 1 ค่าแรก ของฉัน 2 ค่าที่สอง ของฉัน 3 ค่าที่สามของฉัน ฉันต้องการค้นหาค่าที่ฉันให้ตามที่สอดคล้องกับค่าในคอลัมน์ A ตามหมายเลขแถวของเซลล์ที่พบกับค่าที่ตรงกันในคอลัมน์ A มันจะเลือกค่าที่สอดคล้องกันในคอลัมน์ B ซึ่งง่ายพอกับ ฟังก์ชัน LOOKUP () ใน Excel อย่างไรก็ตามฉันต้องการคัดลอกการจัดรูปแบบข้อความของเซลล์ในคอลัมน์ B ตอนแรกฉันเข้าหาสิ่งนี้โดยใช้ฟังก์ชั่น VBA แต่น่าเสียดายที่ฟังก์ชั่นไม่สามารถเปลี่ยนรูปแบบของเซลล์ จะขอบคุณความคิดเกี่ยวกับวิธีการเข้าใกล้

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

3
แยกข้อมูลใน Excel ตามตำแหน่งของอักขระ
ฉันมีคอลัมน์ข้อมูลแต่ละแถวมีชุดอักขระ 83 ตัว (เช่น 010203 344345 929348238482abcde33 4566) โดยไม่มีรูปแบบเฉพาะที่ต้องแบ่งเป็นบล็อกที่มีความยาวต่างกัน (เช่น 6,1,6,6,4,4 ... 4,1,1) อะไรจะเป็นวิธีที่ดีที่สุดในการแยกบล็อกเหล่านี้โดยทางโปรแกรม การตั้งค่ารายการ VBA และวนซ้ำอาจเป็นทางออกที่ดีที่สุดหรือไม่

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