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

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

2
ฉันจะใช้ Private Sub ใน Excel ได้อย่างไร
ฉันต้องการที่จะใช้Private Subฟังก์ชั่นที่จัดไว้ให้ที่นี่ โดยปกติแล้วจะใส่รหัส VBA ใน Visual Basic Editor จากนั้นฉันปิดตัวแก้ไขและฉันเรียกใช้รหัสโดยใช้ "เรียกใช้แมโครนี้" ในแท็บนักพัฒนา แต่ในกรณีนี้ฟังก์ชั่นจะไม่ปรากฏขึ้น ฉันต้องใส่รหัสนี้ให้ทำงานที่ไหน

5
ตั้งค่า Excel ให้ค้นหาภายในเวิร์กบุ๊กทั้งหมดตามค่าเริ่มต้น
ใน Microsoft Excel เมื่อฉันค้นหาโดยใช้CTRL+ Fตามค่าเริ่มต้นจะค้นหาเฉพาะในแผ่นงานปัจจุบัน ฉันจะตั้งค่าให้ค้นหาภายในเวิร์กบุคทั้งหมดตามค่าเริ่มต้นได้อย่างไร Office 2010ฉันมี เป็นไปได้ไหม เป็นไปได้ไหมที่จะตั้งค่านี้สำหรับเวิร์กบุ๊กหรือเวิร์กชีทที่เฉพาะเจาะจง ฉันโอเคกับการแก้ไขรีจิสทรีหากเป็นสิ่งที่ต้องใช้ หมายเหตุ:เกือบ 10 ปีต่อมาฉันยังคงต้องการทำเช่นนี้ แต่ตอนนี้สำหรับ Excel 2016/2019

4
ตำแหน่งที่จะหาแหล่งที่มาของฟังก์ชั่น VBA ใน Excel
ฉันมีสมุดงานที่ใช้ฟังก์ชัน vba บางอย่างซึ่งไม่ปรากฏในส่วนแทรก | แทรกฟังก์ชั่น ... รายการกล่องโต้ตอบของฟังก์ชั่นที่มีอยู่ ฉันจะค้นหาที่มาได้อย่างไร (เพื่อดูว่ามันทำอะไร)

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

3
ฟังก์ชั่นผู้ใช้กำหนดเองโดยไม่ต้องใช้ VBA
เป็นไปได้หรือไม่ที่จะสร้างฟังก์ชั่นผู้ใช้ที่กำหนดเองใน Excel โดยไม่ใช้ VBA? ปัญหาของฉันคือฉันมีฟังก์ชั่น excel มาตรฐานที่ยาวเหยียดเข้าด้วยกันเพื่อสร้างฟังก์ชันที่ยาวมาก ฟังก์ชั่นนี้ใช้กับแผ่นงาน 25 แผ่นในสมุดงานของฉัน หากฉันต้องการทำการเปลี่ยนแปลงฉันต้องการทำเช่นนี้ในที่เดียวและมีการเปลี่ยนแปลงที่แพร่กระจายทั่วทุกแผ่นงานโดยอัตโนมัติ ตัวอย่างเช่นกรณีที่ง่ายและไม่สำคัญคือการเพิ่มหนึ่งในผลลัพธ์ของ SUM () เช่น SUM (mySeries) +1 และเรียกว่าเป็นฟังก์ชันใหม่ MYSUM () ฉันลังเลที่จะแปลสูตรยาว ๆ ให้เป็น VBA เนื่องจากข้อผิดพลาดที่อาจเกิดขึ้นและความซับซ้อนที่เพิ่มขึ้น

3
ค้นหาค่าใน Excel โดยคืนค่าใช่หรือไม่
ฉันมีสมุดงานหนึ่งเล่มโดยมีสองแผ่นแยกกัน ฉันต้องการทราบว่าค่าที่ปรากฏในแผ่นงาน B ปรากฏในแผ่นงาน A หรือไม่ถ้าใช่ฉันต้องการส่งคืน "ใช่" ถ้าไม่ฉันต้องการส่งคืน "ไม่" (ตัวอย่าง: แผ่นงาน A เป็นรายการหนังสือที่เกินกำหนดแผ่นงาน B เป็นห้องสมุดทั้งหมด) ในแผ่นงาน A ฉันมีชุดข้อมูลต่อไปนี้: A 1 AB123CD 2 EF456GH 3 IJ789KL 4 MN1011OP ในแผ่นงาน B ฉันมีชุดข้อมูลต่อไปนี้: A Overdue 1 AB123CD ? 2 QR1516ST ? 3 EF456GH ? 4 GT0405RK ? 5 IJ789KL ? 6 MN1011OP ? …

3
ฉันจะดาวน์โหลดราคาหุ้นใน Excel 2013 ได้อย่างไร มีฟังก์ชันเทียบเท่ากับสเปรดชีต GoogleFinance ของ Google Doc หรือไม่
ในสเปรดชีต Google เอกสารฉันสามารถใช้สูตรเซลล์นี้: =GoogleFinance("GOOG", "price") เพื่อดาวน์โหลดราคาหุ้นล่าสุด มีฟังก์ชันที่เทียบเท่าใน Excel 2013 หรือไม่ Excel เวอร์ชันก่อนหน้ามีคุณสมบัติสมาร์ทแท็กที่ดาวน์โหลดข้อมูลมากมายสำหรับแต่ละทิกเกอร์ (จริง ๆ แล้วถ้าคุณต้องการราคา) และฉันเคยเห็นแหล่งข้อมูลที่แนะนำแอป Bing Financeสำหรับ Excel 2013 น่าเสียดาย สิ่งนี้ถูกยกเลิก มีวิธีง่าย ๆ ในการทำเช่นนี้? ฉันแค่ต้องการราคาล่าสุดและฉันไม่สนใจว่ามันจะล่าช้าหรือไม่มาจาก Yahoo Finance และอื่น ๆ สมมุติว่าฉันสามารถเขียนรหัส VBA เพื่อดาวน์โหลดไฟล์ CSV จาก YF แยกวิเคราะห์ได้ แต่ฉัน หวังว่าจะหลีกเลี่ยงการสร้างเวิร์กบุ๊กที่เปิดใช้งานมาโคร

3
การใช้เท็กซ์เอดิเตอร์ภายนอกเพื่อแก้ไขโค้ด VBA
ฉันได้รับรหัส VBA จำนวนมากเพื่อรักษาและจนถึงขณะนี้ฉันใช้ VBE บางครั้งก็ค่อนข้างยากที่จะทำงานบางอย่างเช่นการค้นหาข้อความขั้นสูงดังนั้นฉันมักจะส่งออกโมดูลแก้ไขเนื้อหาด้วยเสียงเรียกเข้าและนำเข้าโมดูลดัดแปลงเพื่อทดสอบรหัส สิ่งนี้อาจทำให้สับสนและน่าเบื่อเล็กน้อย ฉันรู้ว่า VBE สามารถเป็น COM แบบอัตโนมัติได้ดังนั้นฉันจึงคิดว่ามีวิธี (เช่นปลั๊กอินหรือสคริปต์) เพื่อใช้ตัวแก้ไขข้อความภายนอก (vim, notepad ++ หรือข้อความประเสริฐ) เพื่อเขียนรหัส VBA แล้วรีเฟรชโดยอัตโนมัติใน VBE ขอบคุณล่วงหน้า

3
นำเข้าข้อมูล json ไปยัง Excel
ฉันมีไฟล์ข้อความในรูปแบบ json และต้องการอ่านมันลงใน Excel ตัวอย่างที่ง่ายมากของไฟล์ json มีโครงสร้างดังต่อไปนี้: { [ { 'a': 10, 'b': 20 }, { 'a': 20, 'b': 22 }, { 'a': 11, 'b': 24 } ] } ฉันต้องการแปลงเป็น Excel ซึ่งแต่ละระเบียนกลายเป็นแถวใน excel ด้วยพารามิเตอร์ที่เลือกเป็นส่วนหัวคอลัมน์

5
เลือกทั้งคอลัมน์ลบแถวส่วนหัวในแมโคร Excel
ฉันจะเข้าถึงช่วงที่สอดคล้องกับทั้งคอลัมน์เริ่มต้นที่แถว 2 ได้อย่างไร (มีแถวส่วนหัว) จุดสิ้นสุดของการเลือกควรเป็นเซลล์ที่ไม่ว่างสุดท้ายในคอลัมน์

1
ลบโมดูล 'ThisWorkbook' หลายโมดูลออกจากตัวแก้ไข Excel VBA
ภายในเครื่องมือแก้ไข VBA ฉันพบอินสแตนซ์ของโมดูล 'ThisWorkbook' ที่ซ้ำกันที่เห็นในภาพหน้าจอนี้: ฉันต้องการลบอินสแตนซ์พิเศษเหล่านี้ แต่ไม่ทราบว่าจะทำอย่างไร ThisWorkbook1 ตอนนี้โมดูลได้รับการยอมรับโดยระบบที่มีหมายเลขชีตทั้งหมดของฉันตอนนี้มี 1 ต่อท้ายท้ายของพวกเขา I.e แผ่นที่ 11, 21, 31, 41, 51, 61 ฉันไม่รู้ว่าโมดูลอื่น ๆ มีอยู่จริงอย่างไร ใครช่วยได้บ้าง

1
ค้นหาและแทนที่ค่าหลายค่าภายในเซลล์ที่เลือก
ฉันต้องการเรียกใช้การค้นหาและแทนที่ค่าหลายค่าภายในช่วงใน excel ด้วยค่าจาก 2 คอลัมน์: A ด้วยคำเดิม; B พร้อมคำแปล ฉันพบรหัส VBA แล้วเพื่อให้ทำงานได้ 50% แต่รหัสนี้ทำงานบน worskheet ทั้งหมด เป็นการดีที่ฉันจะสามารถเรียกใช้ในช่วงที่ฉันเลือก โบนัสเพิ่มจะเป็นถ้าฉันสามารถเลือกช่วงการค้นหาได้เช่นกัน นี่คือสิ่งที่ฉันใช้อยู่ไกลขนาดนี้ ขอบคุณสำหรับความช่วยเหลือของคุณ! Sub abbrev() Dim abvtab() As Variant Dim ltsheet As Worksheet Dim datasheet As Worksheet Dim lt As Range 'Change Lookup to the sheet name with your lookup table. Set ltsheet …

2
อนุญาตให้ผู้ใช้ยกเลิกการซ่อน (รูปแบบ) คอลัมน์ที่เลือกเท่านั้น
TL; DR สิ่งที่ฉันต้องการบรรลุ: ซ่อนบางคอลัมน์ที่ฉันไม่ต้องการให้ใครเห็น (ทำเครื่องหมาย) ซ่อนบางคอลัมน์ที่ฉันต้องการให้ผู้ใช้บางคนเห็น (ทำเครื่องหมาย) ตั้งรหัสผ่านแยกต่างหากสำหรับทั้งสองกลุ่มคอลัมน์ (หนึ่งฉันจะไม่เปิดเผยและอื่น ๆ ฉันจะเปิดเผยให้กับผู้ใช้ที่เลือก) (ยกเลิกการเลือก) แต่ปัญหาคือ: หากฉันทำเครื่องหมาย "อนุญาตให้ผู้ใช้ทุกคนจัดรูปแบบคอลัมน์" ในระดับการป้องกันทั้งแผ่นงานคอลัมน์ทั้งหมดอาจไม่ถูกซ่อนโดยใครก็ได้ หากฉันตั้งรหัสผ่านสำหรับช่วง ("อนุญาตให้ผู้ใช้แก้ไขช่วง") ในขณะที่ "ไม่อนุญาตให้ผู้ใช้ทุกคนจัดรูปแบบคอลัมน์" จะไม่สามารถซ่อนคอลัมน์ได้โดยไม่ทราบรหัสผ่านที่ดีกว่า (ซึ่งปกป้องคอลัมน์ที่ฉันไม่ต้องการด้วย แสดงให้ทุกคน) เรื่องเต็ม: ฉันมีไฟล์ excel ที่ฉันต้องการแชร์ มีคอลัมน์ที่ซ่อนอยู่ซึ่งฉันไม่ต้องการให้ใครซ่อนตัว แต่ในอีกทางหนึ่งมี 2 คอลัมน์ที่ฉันต้องการได้รับการปกป้องในแบบที่ผู้ใช้บางคนสามารถดู (ยกเลิกการซ่อน) พวกเขาได้ ฉันขุดลงในแผ่นป้องกันให้ผู้ใช้สามารถเข้าถึงช่วง ฯลฯ แต่ฉันไม่สามารถจัดการเพื่อหาวิธีการแก้ปัญหาการซ่อนคอลัมน์ / ซ่อนตัว ฉันพยายามซ่อนคอลัมน์ทั้งหมด (คอลัมน์ที่ฉันต้องการซ่อน perma และคอลัมน์ที่ฉันไม่ต้องการให้ผู้ใช้บางคนซ่อน) และตั้งรหัสผ่านสำหรับการแก้ไขชีท จากนั้นฉันคิดว่าฉันจะตั้งรหัสผ่านแยกต่างหากสำหรับช่วงการแก้ไข (และฉันเลือกคอลัมน์ที่ฉันต้องการ) แต่ถึงกระนั้นก็เป็นไปไม่ได้ที่จะเลิกซ่อนช่วงที่แยกจากกัน (ประกอบด้วยคอลัมน์ที่ฉันต้องการแสดงให้ผู้ใช้บางรายเห็น ดังนั้นฉันจึงพยายามนำบางสิ่งมาใช้ในระดับแผ่นงานทั้งหมดและพบว่ามีแอตทริบิวต์ "อนุญาตผู้ใช้ทั้งหมด .. …

1
วิธีเรียกใช้แมโครบนกล่องจดหมายที่ใช้ร่วมกันใน Outlook 2013
ฉันกำลังทำงานกับกล่องจดหมายของตัวเอง แต่ยังมีกล่องจดหมายที่ใช้ร่วมกัน ฉันมีมาโครเพื่อบันทึกสิ่งที่แนบมาโดยอัตโนมัติในอีเมลที่ฉันได้รับ แต่ใช้งานได้เฉพาะกับกล่องจดหมายของตัวเองเท่านั้นและไม่ใช่สำหรับกล่องจดหมายที่แชร์ คุณช่วยกรุณาบอกฉันว่าฉันสามารถทำให้เกิดขึ้นได้อย่างไร นี่คือสิ่งที่ฉันมี: Private Declare Function ShellExecute Lib "shell32.dll" Alias _ "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _ ByVal lpFile As String, ByVal lpParameters As String, _ ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private WithEvents Items As Outlook.Items Private Sub …

3
วิธีเปิดผู้ติดต่อ Outlook โดยใช้สคริปต์บรรทัดคำสั่งของ Windows
ฉันมักจะเก็บข้อมูลจำนวนมากในช่องหมายเหตุของผู้ติดต่อ Outlook การเข้าถึงข้อมูลโดยละเอียดสำหรับผู้ติดต่อเฉพาะใน Outlook 2013 ต้องใช้หลายขั้นตอนบนเดสก์ท็อป Windows: เปิด Outlook เปลี่ยนเป็นมุมมองผู้ติดต่อ ค้นหาผู้ติดต่อตามชื่อ การเปิด "มุมมองบุคคล" ของผู้ติดต่อแบบรวม เปิดบัตรผู้ติดต่อ Outlook แบบเต็ม ในฐานะผู้ใช้ขั้นสูงฉันต้องการใช้สคริปต์แทน: Win-R oc John Smith ที่Win-Rเป็นทางลัดที่จะเปิดRun...หน้าต่างและocจะเป็นชนิดบางส่วนของสคริปต์ (PowerShell, VBA, Perl,?) เพื่อเปิดโดยตรงบัตรผู้ติดต่อของ Outlook รายละเอียดสำหรับชื่อที่กำหนด จะมีวิธีใดในการบรรลุเป้าหมายนี้หรือไม่? รหัสเฉพาะจะดีมาก (โปรดทราบว่าน่าเสียดายที่ Outlook 2013 ไม่สามารถเข้าถึงเนื้อหาของ Windows Search ได้อีกต่อไป) ขอบคุณ

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