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

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

1
Excel: สร้างโฟลเดอร์ VBA script - รับค่าจากเซลล์ที่เลือกหรือไม่
ฉันใช้รหัส VBA เพื่อสร้างโฟลเดอร์ใหม่ในไดเรกทอรี สิ่งที่ฉันต้องการทำคือรับชื่อโฟลเดอร์ใหม่จากเซลล์ที่เลือก ความคิดเห็นใดที่ฉันสามารถทำได้โปรด นี่คือรหัสที่ฉันมีอยู่ If Target.Column = Range("B1").Column Then If Target.Row > 7 Then 'Variable definitions Dim FolderListRange As Range Dim FolderRange As Variant Dim FolderName As String Dim ParentFolderPath As String On Error GoTo Handle ' Set the Folder where the individual folders should be created ParentFolderPath …

1
VBA เพื่อย้ายกล่องข้อความทำงานแล้วหยุดทำงาน
รหัสนี้ควรหากล่องข้อความธรรมดา / พื้นฐานบนแผ่นงานแล้วเลื่อนไปทางซ้าย จากนั้นไปที่แผ่นงานถัดไปและทำสิ่งเดียวกัน ทำจนกระทั่งแผ่นสุดท้าย มันใช้งานได้ (ขณะที่ฉันหมุนไปรอบ ๆ โดยใช้ F8) แต่จากนั้นแผ่นถัดไปที่ระบุว่าวัตถุไม่รองรับคุณสมบัติของวิธีการนี้ ฉันไม่รู้ว่าทำไมสิ่งนี้จึงเกิดขึ้น Dim I As Integer Dim txBox As Shape Set txBox = ActiveSheet.Shapes("Text Box 1") For I = 1 To Worksheets().Count Worksheets(I).Activate txBox.Select **Selection.ShapeRange.IncrementLeft 586.5** Next I End Sub

1
Excel สามารถกรองเซลล์ตามข้อความสูตรแทนที่จะเป็นผลลัพธ์ของสูตรได้หรือไม่
ฉันมีเพื่อนร่วมงานถามฉันเมื่อวานนี้ว่าเป็นไปได้หรือไม่ที่จะตั้งค่าตัวกรองอัตโนมัติเพื่อแสดงคอลัมน์ตามข้อความของสูตรในเซลล์แทนที่จะเป็นผลลัพธ์ที่คำนวณได้ ตัวอย่างเช่นถ้าผมมีสูตร=D3*3, =D3*4และ=D3*5ผมต้องการกรองขึ้นอยู่กับ*3, *4และ*5ส่วนของสูตร เป็นไปได้ไหม จากตัวเลือกใน UI ดูเหมือนว่าเพื่อนร่วมงานของฉันอาจต้องใช้ VBA เพื่อแก้ปัญหา

0
การถ่ายโอนข้อมูลระหว่างเวิร์กบุ๊กตามค่าในเซลล์เฉพาะ
ฉันสร้างฟอร์มใน Excel ที่ย้ายข้อมูลที่ป้อนในแบบฟอร์มไปยังแผ่นงานที่อยู่ติดกันในสมุดงานเดียวกันรวมถึงสมุดงานตัวแทนของฉันที่เส้นทางไฟล์ที่แตกต่างกัน ชิ้นส่วนของจิ๊กซอว์นั้นได้รับการจัดวางให้เข้าที่! ทำงานเหมือนจับใจ! จากที่นี่ฉันจะสร้างสมุดงานเพิ่มเติมสองเล่มซึ่งเหมือนกับตัวแทนแรก (3 ตัวแทนในทั้งหมด) ซึ่งข้อมูลจะกรองพร้อมกัน สิ่งที่ฉันไม่สามารถหาได้คือรายละเอียดการถ่ายโอนเพิ่มเติมโดยมีเพียงข้อมูลไปยังสมุดงานหนึ่งเล่มหากชื่อตัวแทนอยู่ในรายการในคอลัมน์ที่ระบุ ในกรณีของฉันชื่อตัวแทนของฉันอยู่ในคอลัมน์ D เมื่อฉันกดปุ่มส่งฉันต้องการทราบว่ามาโครของฉันจะจดจำชื่อที่ป้อนในเซลล์นั้น ๆ และกำหนดเส้นทางไปยังสมุดงานตัวแทนเฉพาะนั้นซึ่งตรงข้ามกับทั้ง 3 ตัวแทนหรือไม่ ฉันรู้ว่ามันเป็นไปได้ แต่สมองถั่วน้อยของฉันไม่อนุญาตให้ฉันเข้าถึงเซลล์สมองของฉันได้อีกต่อไป! ฉันใหม่ในการเขียนใน VBA ดังนั้นฉันอาจจะหายไปมาก ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม รหัสปัจจุบันที่ฉันมีอยู่ด้านล่าง Private Sub CommandButton1_Click() Dim DateReceived As Date Dim CustomerName As String Dim AcctNumber As Single Dim AssignedAgent As String Dim DisputeCode As Single Dim …

1
ฉันจะเข้าถึงเอกสารใหม่ใน vba ได้อย่างไร
ฉันสร้างเทมเพลต. dot พร้อมกับมาโครสองสามตัว อย่างไรก็ตามเมื่อฉันสร้างเอกสารใหม่ตามแม่แบบฉันพบปัญหา ถ้าฉันอ้างอิงเอกสารที่เปิดใช้งานฉันจะได้รับข้อความว่าไม่มีเอกสารใดเปิดอยู่ ดังนั้นฉันจะเลือกส่วนหนึ่งของเอกสารใหม่ได้อย่างไร ฉันได้ลอง activedocument.range, me.content.range, me.range ในทุกกรณีฉันอาจได้รับข้อความแสดงข้อผิดพลาดเช่นคุณสมบัติไม่มีอยู่หรือไม่มีเอกสารที่ใช้งานอยู่หรือ Word ขัดข้อง ฉันใช้ Word 2010 แต่เอกสารจะถูกบันทึกเป็น. doc เพื่อความเข้ากันได้กับโปรแกรมอื่นและมาโครในแม่แบบควรทำงานใน Word 2007 เช่นกัน

0
VBA ใช้อาร์เรย์เพื่อหลีกเลี่ยงค่าการเข้ารหัสฮาร์ดเพื่อเรียกมาโครที่แตกต่างกัน
ฉันมีค่าในคอลัมน์ D ของแผ่นงาน (Sheet2) ในเวิร์กบุ๊กที่มีค่าที่ได้มาจากสูตรเพื่อให้ได้เพียงส่วนสุดท้ายของค่าที่ยาวกว่าในเซลล์คอลัมน์ C ค่าที่มากกว่านั้นจะถูกป้อนโดยอัตโนมัติในคอลัมน์ C ผ่านการดับเบิลคลิก บนแผ่นงานแยกต่างหาก (Sheet5) ฉันมีรายการค่าในคอลัมน์ C ของแผ่นงานนั้น หากค่าใด ๆ ในคอลัมน์ D ของ Sheet2 เท่ากับค่าใด ๆ ในคอลัมน์ C ของ Sheet5 ฉันต้องการเซลล์ในคอลัมน์ F ของ Sheet2 เพื่อเปลี่ยนเป็นสีแดง เมื่อเซลล์คอลัมน์ F ใน Sheet2 เป็นสีแดงขึ้นอยู่กับค่าในคอลัมน์ D ฉันต้องการให้เซลล์สีแดงสามารถคลิกได้ซึ่งจะนำผู้ใช้ไปยังชีตอื่นที่แสดงรายการค่าอ้างอิงที่สัมพันธ์กับค่าในคอลัมน์ D รหัสด้านล่าง ทำแค่นั้น Private Sub Worksheet_Change(ByVal Target As Range) Dim c As …

1
อัปเกรดจาก MS Outlook 2003 เป็น MS Outlook 2013 - วิธีโยกย้ายมุมมองที่กำหนดเองและแถบเมนู?
ฉันกำลังทำงานกับMicrosoft Outlook 2003และต้องการอัปเกรดเป็น MS Outlook 2013`` ฉันได้ทำการดัดแปลงบางอย่างซึ่งเครื่องสำคัญสำหรับงานของฉันและฉันสงสัยว่าวิธีที่ง่ายที่สุดในการทำให้พวกเขาเป็นสิ่งใหม่Outlook 2013 : มุมมองที่กำหนดเอง - ฉันกำลังทำงานกับมุมมองที่กำหนดเอง (ส่วนใหญ่เป็นตาราง) ในอีเมลและปฏิทิน เมนูที่กำหนดเอง - ฉันได้สร้าง 2 เมนูเพิ่มเติมในแถบเมนูที่ให้ฉันเปิด makros โดยตรง (รวมถึงแป้นพิมพ์ลัด) ค้นหาโฟลเดอร์ - ฉันกำลังทำงานกับโฟลเดอร์ค้นหาที่กำหนดเองซึ่งใช้มุมมองที่กำหนดเองและสร้างมาโคร VBA ที่กล่าวถึงข้างต้นเพื่อข้ามไปยังมุมมองเหล่านั้นโดยตรงด้วยแป้นพิมพ์ลัดบางแป้น

1
VBA สามารถลบช่วงที่มีชื่อโดยอ้างอิงตามค่า RefersTo หรือไม่
ฉันกำลังล้างเวิร์กบุ๊ก Excel ที่ป่องและพยายามลบช่วงที่มีชื่อเป็นจำนวนมากซึ่งอ้างถึงเวิร์กบุ๊กในไดรฟ์ C ของใครบางคน มีจำนวนมาก และพวกเขาไม่ได้ถูกใช้ในสมุดงานนี้ 'C: \ blahblah \ ... \ ... \ ... \ ... \ ... \ [WorkBookName.xls] Sheet1! $ E $ 28 รหัสด้านล่างช่วยฉันลบช่วงที่มีชื่อซึ่งชื่อของพวกเขามี 'ไอคอน' (ตัวอย่าง) อย่างไรก็ตามฉันต้องลบช่วงเมื่อมีเส้นทางตามที่แสดงด้านบน โปรดจำไว้ว่าชื่อเวิร์กบุ๊กหรือแผ่นงานอาจเปลี่ยนแปลงได้เช่นกันแต่ไดรฟ์ยังคงเหมือนเดิม Sub deleteNamedRangesSpecific() For Each NR In ActiveWorkbook.Names If NR.NameLocal Like "*" & "icon" & "*" Then NR.delete Next …

1
เรียกใช้แมโคร VBA โดยอัตโนมัติทุกครั้งที่มีการเปลี่ยนแปลงค่าของเซลล์
ฉันมีมาโครที่ทำงานได้อย่างสมบูรณ์ - ยกเว้นว่าฉันต้องเรียกใช้ด้วยตนเอง ฉันไม่สามารถหาวิธีที่จะให้มันทำงานโดยอัตโนมัติเมื่อฉันเปลี่ยนค่าในเซลล์อื่น Sub MonthlyMaintHideRowsWithZeroDollars() ' This Macro reads down the dollar column and hides rows with $0 ' so that they do not pull into the proposal If Range("B7").Value = "Hide" Then Rows("7:7").EntireRow.Hidden = True ElseIf Range("B7").Value = "Show" Then Rows("7:7").EntireRow.Hidden = False End If End Sub

1
เพิ่มหมายเลขลำดับใน 4 เซลล์ที่แตกต่างกันหลังจากพิมพ์
ฉันสร้างใบเสร็จขนาดตัวอักษร 1/4 และคัดลอก 4 ครั้งในแผ่นงานเดียว (เพื่อบันทึกเอกสาร) และต้องการพิมพ์อย่างต่อเนื่องตั้งแต่ 001 ถึง 100 ใบเสร็จแต่ละใบควรมีหมายเลขเฉพาะ 001,002 ... 100 .. ฉันจะใส่หมายเลขต่อเนื่องใน 4 เซลล์ต่างกันเช่น A1, C1, E1 และ G1 เป็นเซลล์ของฉันด้วยหมายเลข 001,002,003,004 และเพิ่มแต่ละหมายเลขหลังจากพิมพ์แต่ละครั้งได้อย่างไร ฉันยังต้องการความสามารถในการระบุหมายเลขเริ่มต้น ฉันพบสิ่งนี้ในเว็บดังนั้นอาจเป็นจุดเริ่มต้น: Sub IncrementPrint() Dim xCount As Variant Dim xScreen As Boolean Dim I As Long On Error Resume Next LInput: xCount = Application.InputBox("Please …

1
ไม่สามารถทำให้แผ่นงานนำเข้าจากฟังก์ชั่นไดเรกทอรีเคลื่อนไหวได้หรือ
ฉันสามารถแก้ไขโค้ดด้านล่างเป็นการนำเข้าแบบไดนามิกของแผ่นเพื่อให้สามารถทำงานในแผ่นใด ๆ จาก macrobook ส่วนบุคคลของฉันแทนแผ่นที่เรียกว่าimport-sheets.xls? พบรหัสสำหรับการนำเข้าด้านล่าง Dim directory As String, fileName As String, sheet As Worksheet, total As Integer Application.ScreenUpdating = False Application.DisplayAlerts = False directory = "c: est\" fileName = Dir(directory & "*.xl??") Do While fileName <> "" Loop Workbooks.Open (directory & fileName) For Each sheet In Workbooks(fileName).Worksheets total …

4
EXCEL - มีสูตรส่งออกและอินพุตผู้ใช้ในเซลล์เดียวกันได้อย่างไร
ฉันต้องการความช่วยเหลือจากใครบางคนเนื่องจากฉันเชื่อว่าปัญหานี้ต้องใช้ VB โดยทั่วไปฉันมี CELL (A4) ซึ่งผู้คนจะป้อนค่าเพื่อค้นหาการคำนวณที่เกี่ยวข้องที่แสดงด้านล่าง อย่างไรก็ตามฉันต้องการเพิ่มฟังก์ชันเพิ่มเติมโดยที่ค่านิยมจะถูกป้อนลงในเซลล์เดียวกันนั้นโดยอัตโนมัติ (A4) เซลล์ E7 และ E8 จะรับอินพุตและคูณด้วย 960 (E7) หรือ 765 (E8) และถ่ายโอนค่าดังกล่าวไปยังเซลล์ (A4) เพื่อให้สูตรที่เหลืออัปเดตอย่างเหมาะสม โดยทั่วไปให้ผู้ใช้ใส่ถุงโดยตรงใน A4 หรือป้อนจำนวนภาชนะใน E7 หรือ E8 ** ที่นี่ฉันมีปัญหาเพราะเมื่อฉันป้อนสูตรใน A4 มันจะถูกลบเมื่อคุณป้อนค่าโดยตรง ** โปรดทราบว่าผลลัพธ์จาก E7 และ E8 ควรจะแสดง (ใน A4) ตามที่ฉันต้องการ แผ่นงานของฉัน:

1
เชื่อมต่อค่าที่ไม่ซ้ำกันเท่านั้น
ฉันมีฟังก์ชั่นนี้ Public Function CONCATENATESPECIAL(rng As Range) As String Dim rng1 As Range CONCATENATESPECIAL = "" For Each rng1 In rng If (Not Rows(rng1.Row).Hidden) And (rng1.Value <> "") Then CONCATENATESPECIAL = CONCATENATESPECIAL & rng1.Text & "|" End If Next rng1 End Function โดยทั่วไปจะเชื่อมค่าในบางช่วงด้วย "|" สิ่งที่ฉันต้องการคือ - เป็นไปได้ไหมที่จะแก้ไขให้เป็น - ถ้ามีในบางช่วงค่าที่ซ้ำกันเพื่อรวมไว้เพียงครั้งเดียว? หากต้องการสรุป - …

2
รหัส VBA เพื่อลบเซลล์ว่าง
มีความคิดว่าทำไมสิ่งนี้ถึงใช้งานไม่ได้ ฉันได้รับข้อผิดพลาดรันไทม์ 1004: ข้อผิดพลาดที่กำหนดโดยแอปพลิเคชันหรือวัตถุที่กำหนด ฉันกำลังพยายามลบส่วนทั้งหมดของแถวถ้าเซลล์แรกนั้นว่างเปล่าแล้วถ้ามันไม่ว่างเปล่าให้ลบแถวที่ว่างเปล่าทั้งหมดจนกระทั่งมีแถวที่มีค่า เป็นเพียงการล้างสเปรดชีตอย่างง่ายดาย ฉันแนบรหัสแล้ว ป้อนคำอธิบายรูปภาพที่นี่ Private Sub checkRows() 'H or 8 If IsEmpty(Range("A827").Value) = True Then Rows("825:925").EntireRow.Delete XlDeleteShiftDirection.xlShiftUp Else Rows("827:925").Select Selection.EntireRow.SpecialCells(xlBlanks).EntireRow.Delete End If 'G or 7 If IsEmpty(Range("A725").Value) = True Then Rows("723:823").EntireRow.Delete XlDeleteShiftDirection.xlShiftUp Else Rows("725:823").Select Selection.EntireRow.SpecialCells(xlBlanks).EntireRow.Delete End If 'F or 6 If IsEmpty(Range("A623").Value) = True Then Rows("621:721").EntireRow.Delete …

1
VBA ใน Excel 2013 วนซ้ำไฟล์ที่ใช้สัญลักษณ์แทนกับไดเรกทอรีย่อย
ฉันมีสคริปต์ MATLAB ที่วิเคราะห์ผลการทดลองเกี่ยวกับวิดเจ็ตจำนวนมากที่ บริษัท ของฉันทำและสุดท้ายก็ส่งออกข้อมูลสรุปไปยังไฟล์ CSV ฉันต้องการนำเข้าไฟล์ csv ทั้งหมดเหล่านี้ลงในสมุดงาน Excel เพื่อให้ฉันสามารถเปรียบเทียบผลลัพธ์ที่สรุปโดยใช้ตารางสาระสำคัญ ปัจจุบันวิดเจ็ตแต่ละรายการมีไดเรกทอรีของตัวเองพร้อมด้วย ชุดข้อมูล ไดเรกทอรีย่อยที่มี pivotData.csv ไฟล์. โครงสร้างไดเรกทอรีมีลักษณะดังนี้: C: \ เส้นทาง \ to \ วิดเจ็ต Widget_1 \ ชุดข้อมูล \ pivotData.csv Widget_2 \ ชุดข้อมูล \ pivotData.csv Widget_3 \ ชุดข้อมูล \ pivotData.csv Widget_3b \ ชุดข้อมูล \ pivotData.csv Widget_4 \ ชุดข้อมูล \ pivotData.csv สมุดงานหลัก …

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