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

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

4
Excel - วันและวันที่ของเดือน
ฉันลองสูตร "วันที่" ไม่กี่ครั้ง แต่ไม่สามารถใช้งานได้ นี่คือปัญหาของฉัน: ฉันต้องการตั้งค่าสเปรดชีตที่จะอนุญาตให้ผู้ใช้พิมพ์ใน A1 - เดือนและปี ฉันต้องการให้สเปรดชีตเติมคอลัมน์ A โดยอัตโนมัติด้วย "วัน" ของเดือนเช่น หากเดือนนั้นเริ่มต้นในวันพุธวันพุธจะเป็นวันแรก ฉันต้องการให้คอลัมน์ B เติมวันที่เช่น 01/12/2018 (รูปแบบสหราชอาณาจักร) นอกจากนี้ฉันต้องการให้ละเว้นวันอาทิตย์ ฉันมีคู่มือรุ่นนี้ซึ่งฉันจะต้องพิมพ์ค่าในแต่ละเดือน แต่ฉันต้องการจะทำมันโดยอัตโนมัติเพราะมันจะต้องทำ 80 ครั้งและฉันไม่ต้องการให้มีการเติมด้วยตนเองก่อนจากนั้นจึงคัดลอกและวาง ครั้ง ข้อเสนอแนะใด ๆ

1
Excel VBA - กู้คืนแบบฟอร์มผู้ใช้ที่ถูกลบโดยไม่ได้ตั้งใจ
ฉันลบรูปแบบผู้ใช้ของฉันใน Excel VBA โดยไม่ได้ตั้งใจ วิธีคืนค่าฟอร์มผู้ใช้ ใครสามารถช่วยฉันแก้ไขปัญหาของฉันได้บ้าง มันเป็นงานเกือบหนึ่งสัปดาห์

2
Excel 2013 - การตรวจสอบความถูกต้องของข้อมูล - สร้างรายการแบบหล่นลงพร้อมค่าถ้าตรงกับเกณฑ์ที่สอง
ฉันจะทำให้ปัญหาของฉันง่ายขึ้นมากที่สุด ฉันได้สองแผ่นใน Excel ในแผ่นงานแรกฉันกำลังสร้างรายการที่ตั้ง ฉันจำเป็นต้องเลือกพื้นที่ที่ตั้งอยู่ในคอลัมน์ A ก่อนที่ฉันจะพิมพ์ในตำแหน่งในคอลัมน์ B ในคอลัมน์ถัดไป (C) จะต้องมี ID ที่สร้างขึ้นโดยอัตโนมัติ ที่สองได้รับ ID 002 ฯลฯ ) ในแผ่นงานที่สองของฉันฉันกำลังสร้างรายการของสินทรัพย์ ดังนั้นอีกครั้งฉันเลือกพื้นที่ในคอลัมน์ A และพิมพ์ชื่อของเนื้อหาในคอลัมน์ B ตอนนี้ฉันต้องการที่จะมีรายการแบบหล่นลงในคอลัมน์ C ซึ่งมันแสดงให้ฉันเฉพาะ ID เหล่านั้นจากตารางแรกที่พื้นที่เดียวกัน ฉันพยายามใช้ฟังก์ชัน OFFSET แต่จุดที่ขาดหายไปคือ "เลือกถ้า" (เช่น countif หรือ sumif) เพื่อ จำกัด รายการ ID ให้ผู้ที่มีพื้นที่เดียวกัน อาจมีสถานที่และสินทรัพย์จำนวนมากในแต่ละพื้นที่ แต่ทุกสถานที่และทรัพย์สินทุกแห่งสามารถแมปเข้ากับที่เดียว รอคอยที่จะตอบคุณผู้ชาย! ทั้งโซลูชัน excel หรือโซลูชัน vba น่ากลัว

1
วิธีการนับสตริงในคอลัมน์ทั้งหมดสำหรับแถวที่มีค่าที่แน่นอน
VBA newbie ที่นี่และฉันดูยากที่จะหามาโครที่ฉันสามารถปรับแต่งและรวมเข้าด้วยกันเพื่อทำสิ่งนี้ให้สำเร็จ ฉันได้วางข้อมูลตัวอย่างของฉันไว้ท้ายบทความนี้ ฉันต้องการผ่านคอลัมน์ 1 (ID_Num) และค้นหาแถวทั้งหมดด้วย ID_Num เดียวกัน (ควรอยู่ติดกันในคอลัมน์เนื่องจากแผ่นถูกเรียงตาม ID_Num) จากนั้นวางจำนวน 1 สำหรับลูกค้าแต่ละรายเมื่อพบสตริง "A", "B" หรือ "C" ใต้คอลัมน์ลูกค้าสำหรับแต่ละแถวของบล็อกที่มี ID_Nums เหมือนกัน การนับไม่ควรมากกว่า 1 เช่นถ้าสตริง "A" หรือ "B" หรือ "C" อยู่ในช่วงจากนั้นมีการลงทะเบียน 1 มิฉะนั้นจะมีการลงทะเบียน 0 ความเป็นไปได้อื่น ๆ คือ "D" หรือช่องว่าง ฉันต้องการมีเพียงหนึ่งแถวต่อ ID_Num หลังจากขั้นตอนนี้ ในที่สุดฉันต้องการเพิ่ม 1 และ 0 เหล่านี้สำหรับแต่ละ ID_Num ฉันได้แนบตัวอย่างของข้อมูลที่ฉันมีและสถานที่ที่ฉันต้องการจะจบลง ตัวอย่างข้อมูลต้นฉบับ …

1
เลือกแถวทั้งหมดที่มีเซลล์เน้นอยู่โดยใช้ vba
ฉันขอขอบคุณความช่วยเหลือเกี่ยวกับปัญหาที่ฉันพยายามหา ฉันมีรายงานที่มีหลายเซลล์และหนึ่งในเซลล์มีวันที่ที่เราได้รับแจ้งเรื่องร้องเรียน สิ่งที่ฉันพยายามทำให้สำเร็จคือในต้นเดือนเราคัดลอกและผ่านการร้องเรียนทั้งหมดสำหรับเดือนก่อนหน้า สิ่งที่ฉันทำคือบันทึกแมโครที่จะเน้นเซลล์ทั้งหมดที่มีวันเดือนก่อนหน้าในสีแดงอ่อน แต่ปัญหาของฉันคือฉันได้ทดสอบรหัสที่แตกต่างกันซึ่งจะเลือกทั้งแถวที่มีเซลล์ถูกไฮไลต์แล้วย้ายไปยังแท็บอื่น ด้านล่างเป็นรหัสที่ฉันได้ลอง แต่ฉันต้องการให้มันค้นหาเซลล์ในคอลัมน์ C ที่มีสีที่ถูกเพิ่มในการจัดรูปแบบตามเงื่อนไข ขอบคุณสำหรับความช่วยเหลือ! Sub Test() Dim wks As Worksheet Dim wNew As Worksheet Dim lRow As Long Dim x As Long Columns("C:C").Select Selection.FormatConditions.Add Type:=xlTimePeriod, DateOperator:= _ xlLastMonth Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Font .Color = -16383844 .TintAndShade = 0 End With With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic …

1
อินพุตของผู้ใช้เพื่อเลือกและเติมค่าสำหรับเซลล์
ฉันมีตาราง excel นี้: A2 ถึง A11 เป็นชื่อคลาส Class_1, Class_2, ... , Class_10 B1 ถึง K1 เป็นชื่อนักเรียน 1,2,3, ... , 10 สำหรับนักเรียนแต่ละคนในชั้นเรียนของฉันฉันจะต้องกรอกคะแนนของเขา ฉันต้องการรับ VBA inputbox หรือ userform ดังนั้นฉันจะต้องตอบคำถามจากอินพุตหรือ userform เพื่อกรอกคะแนน ฉันนึกภาพอินพุตหรือฟอร์มผู้ใช้เช่นนี้: คลาส: Class_1 'เทียบเท่ากับแถวของเซลล์ซึ่งในกรณีนี้แถว 2 นักเรียน: 1 'เทียบเท่ากับคอลัมน์ของเซลล์ซึ่งในกรณีนี้คอลัมน์ B ระดับ: A 'เทียบเท่ากับมูลค่าของเซลล์ซึ่งในกรณีนี้ "A" ดังนั้นถ้าฉันกรอก Class_1,1 แล้ว A VBA จะเลือกเซลล์ B2 และจะเติมค่า …

2
รหัส VBA ใดที่ฉันควรใช้เพื่อคัดลอกข้อมูลจากคอลัมน์ A ถึง F ในแผ่นงาน Excel ไปยังแผ่นงานอื่นลบด้วยเซลล์ว่าง
ฉันต้องการคัดลอกข้อมูลจากรายงานไปยังแผ่นงานใหม่โดยเซลล์จัดเรียงตามที่ฉันต้องการ (น่าเสียดายที่ไม่สามารถจัดรูปแบบรายงานต้นฉบับได้!) ฉันจัดรูปแบบลง แต่มันสร้างแถวที่ข้อมูลมี 0 ฉันต้องการรหัส VBA เพื่อคัดลอกเซลล์จากคอลัมน์ A: F ไปยังแผ่นงานอื่น ฉันเห็นตัวอย่างของวิธีการทำคอลัมน์เดียว แต่ฉันเป็นสามเณรมากเกินไปที่จะสร้างรหัสสำหรับคอลัมน์อื่น ๆ (และฉันต้องการให้มันดูดีและเรียบร้อย! Sub copynoblanksA() ' ' ' Dim sh1 As Worksheet, s2 As Worksheet, i As Long Dim j As Long, N As Long, r1 As Range Set sh1 = Sheets("List1") Set sh2 = Sheets("Sheet4") N = …

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

0
เหตุการณ์ WorkSheet_change ไม่ทำงานเมื่อกด Enter แต่แท็บทำงานได้กับการเปลี่ยนแปลงแบบหล่นลง
ฉันเขียนโค้ดแล้ว worksheet_change เหตุการณ์ แต่เหตุการณ์นี้ไม่ทำงานเมื่อฉันกด Enter แต่ใช้งานได้ดีบนแท็บการกด ฉันมีแบบเลื่อนลงในเซลล์แผ่นงาน Excel ใครช่วยกรุณาหาวิธีแก้ปัญหาสำหรับเรื่องนี้? คุณสามารถค้นหาไฟล์ได้ที่นี่ ป้อนคำอธิบายลิงก์ที่นี่

1
ตัวแปรไม่ถูกเตรียมใช้งานใน Excel VBA Loop
ฉันกลับมาพร้อมคำถามอื่นใน VBA ที่นี่ เป็นไฟล์ (อัปเดต) ที่ฉันกำลังทำงานอยู่ เมื่อฉันพยายามเรียกใช้ Run-time error '92': For loop not initialized. วงคือ For Each var In accepted และฉันได้กำหนดไว้แล้ว var และ accepted ดังต่อไปนี้: Dim accepted() As Variant Dim var As Variant ... For Each var In accepted ... Next var ฉันไม่แน่ใจว่าทำไมข้อผิดพลาดนี้เกิดขึ้น

1
ทางเลือกของจดหมายเวียน
ฉันมีเอกสาร Word เทมเพลตที่ฉันใช้เมื่อเขียนเอกสารทางเทคนิคเพื่อส่งด้วยแบบร่าง CAD เนื่องจากลักษณะของผลิตภัณฑ์ที่เราสร้างขึ้นหมายเหตุด้านเทคนิคนี้เกือบจะเหมือนกันสำหรับลูกค้าทุกคนที่เราจัดหาเอกสารให้โดยมีค่าเฉพาะแตกต่างกันสำหรับลูกค้าแต่ละราย ตัวอย่างเช่น; เอกสารนี้ควรอ่านควบคู่กับหมายเลขการวาด XXXXX และ CUSTOMER_NAME สเปค รายการจะเป็น X มม. ความสูง Y มม. ความยาว สำหรับลูกค้าแต่ละรายค่าที่เปลี่ยนแปลงจะเหมือนกันเสมอ ขณะนี้ฉันได้เขียน VBA บางส่วนซึ่งให้รายการแบบเลื่อนลงของฉันในรูปแบบผู้ใช้ซึ่งแสดงรายชื่อลูกค้าที่เลิกกิจการของเราทั้งหมด เมื่อฉันเลือกลูกค้า VBA จะทำการ "ค้นหาและแทนที่" อย่างง่ายบนค่าที่ระบุ ( CUSTOMER_NAME, X และ Y ค่าอื่น ๆ ) แม้ว่าวิธีนี้จะใช้งานได้ในขณะนี้ แต่ก็ไม่สามารถปรับขนาดได้และใช้เวลานานในการแก้ไข (ง่าย) นอกจากนี้ยังหมายความว่าหากฉันเลือกลูกค้าผิดฉันต้องเริ่มต้นใหม่อีกครั้ง (ไม่สามารถเลือกลูกค้ารายอื่นได้จากรายการ) ฉันไม่ต้องการใช้จดหมายเวียนเนื่องจากฉันไม่ต้องการใช้ฐานข้อมูลในพื้นหลังไฟล์ควรมีความเป็นอิสระอย่างสมบูรณ์ ใครบ้างมีตัวอย่างของวิธีอื่นที่สามารถทำได้?

1
ข้อผิดพลาด“ แอปพลิเคชันที่กำหนดหรือวัตถุที่กำหนด” ข้อผิดพลาด '1004 "
ฉันได้รับข้อผิดพลาด runtime 1004 สำหรับ "Application Defined ... Defined" และมีการปรับการจัดรูปแบบบางอย่าง ฉันได้รับข้อผิดพลาดรันไทม์ 1004 "การอ้างอิงการเรียงลำดับไม่ถูกต้องตรวจสอบให้แน่ใจว่ามันอยู่ในข้อมูลที่คุณต้องการเรียงลำดับและกล่อง Sort By แรกไม่เหมือนหรือว่างเปล่า" ฉันมีความรู้ จำกัด ว่าทำไมฉันถึงได้รับข้อผิดพลาดนี้จำกัดความรู้เกี่ยวกับการเขียนโค้ด VBA ด้วย รหัสของฉันดูเหมือนจะคล้ายกันมากในวิธีการกับคนอื่น ๆ ในเว็บ ใช่รหัสของฉันไม่มีประสิทธิภาพมากโปรดอย่าวิจารณ์มันเว้นแต่ว่าเป็นส่วนหนึ่งของการแก้ปัญหา ทุกอย่างทำงานได้ดีจนถึงวันที่ .sort จากนั้นบรรทัดนั้นจะผิดพลาด ฉันได้ลองใช้ความคิดเห็นอื่นในโค้ดภายใต้ 'การจัดเรียงเพื่อให้ทุกคนสามารถมีข้อเท็จจริงทั้งหมดได้ Sub Update() Dim strCar As String 'Dim lastrow As Long strcrit = "MAINT" 'Opening CSV Workbooks.Open Filename:="G:\Common\Schedule Files\Workbook1.csv" Workbooks.Open Filename:="G:\Common\Schedule Files\Workbook2.csv" …

1
IE8: กด 'เปิด' ในกล่องโต้ตอบดาวน์โหลดบันทึกไฟล์ลงในตำแหน่งชั่วคราวไม่สามารถเขียนได้
ฉันมีปัญหาเฉพาะกับ IE8 ผู้ใช้ของเราดาวน์โหลดไฟล์ excel ผ่าน IE8 ไฟล์ excel เหล่านั้นมีมาโครที่สร้างตารางเดือย ในการดำเนินการดังกล่าว excel 2007 จำเป็นต้องมีไฟล์ที่สามารถเขียนได้มิฉะนั้นแมโครจะทำงานล้มเหลวด้วยข้อผิดพลาด VBA สิ่งนี้จะเกิดขึ้นเมื่อผู้ใช้ดาวน์โหลดไฟล์ที่เป็นปัญหาด้วย IE8 และกด 'เปิด' โดยตรงเนื่องจาก IE8 จะดาวน์โหลดไฟล์ไปยัง "โฟลเดอร์ชั่วคราว" ซึ่งฉันไม่พบ (ดูเหมือนจะไม่ได้เป็น% temp% หรืออินเทอร์เน็ตชั่วคราว ไฟล์ แต่บางทีฉันผิด) ซึ่งไฟล์นั้นไม่สามารถเขียนได้ เมื่อผู้ใช้กด 'บันทึก' และ 'เปิด' ครั้งแรกทุกอย่างทำงานได้ดี มีคนแนะนำการแก้ไขสำหรับปัญหานั้นได้ไหม

0
วิธีการเพิ่ม 2 เมื่อคลิกฟังก์ชั่นใน excel
ฉันมีรหัสต่อไปนี้ซึ่งคัดลอกค่าจากแผ่นงานหนึ่งไปอีกแผ่นหนึ่งเมื่อกด B2 ฉันมี 20 เซลล์ที่แตกต่างกันฉันต้องการที่จะคลิกซึ่งจะแสดงข้อความต่าง ๆ จากแท็บต่าง ๆ ฉันกำลังดิ้นรนเพื่อหาทางออกที่ดีสำหรับปัญหานี้ ความช่วยเหลือใด ๆ จะได้รับการชำระล่วงหน้า If Selection.Count = 1 Then If Not Intersect(Target, Range("B2")) Is Nothing Then Worksheets("B").Range("A:J").Copy Worksheets("A").Range("M:V") End If End If

0
ข้อผิดพลาดขณะทำงาน 52 ชื่อหรือหมายเลขไฟล์ไม่ถูกต้องเมื่อพยายามเปิดไฟล์ข้อความ
fPath = "\\teams\Shared Documents\" Filename = "TEST.txt" InputFile = fPath & Filename FileNum = FreeFile Open InputFile For Binary As #FileNum '---- here user gets error 52 ผู้ใช้ได้รับ "ข้อผิดพลาดรันไทม์ 52 ชื่อไฟล์หรือหมายเลขไม่ถูกต้อง" พยายามเปิดไฟล์ข้อความใน excel และเปิดขึ้นมาได้ดี ดังนั้นฉันคิดว่าไม่มีปัญหาในเส้นทางหรือไฟล์ คุณช่วยฉันแก้ไขปัญหานี้ได้ไหม

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