Tag: vba

用户窗体combobox

我有一个用户窗体有一个combobox和一个文本框。 TextBox需要为ComboBox的值做一个查找,但是如果该值存在于列表中,如果不存在,我不想在TextBox中出现任何东西,所以用户可以input新的信息。 这是我有多远: Private Sub TextBox1_Enter() If cbocolor.Value <> "" Then Dim evalStr As String Dim check As Variant evalStr = WorksheetFunction.VLookup(cbocolor.Value, worksheets("CONTACTS").Range("allcontacts"), 2, False) check = Evaluate(evalStr) If VarType(check) = vbError Then TextBox1.Value = "Enter new info" Else var1 = WorksheetFunction.VLookup(cbocolor.Value, Worksheets("CONTACTS").Range("allcontacts"), 2, False) TextBox1.Value = var1 End If

没有看到Excel VBA的PDF字段

我的任务是创build一个Excel工具,将数千个PDF数据导入到Excel中。 我已经安装了Adobe Acrobat X Professional,它似乎工作正常。 我正在使用Excel 2007。 我在这里find示例代码: http : //khkonsulting.com/2010/09/reading-pdf-form-fields-with-vba/ 并稍微修改它,以提示我浏览到PDF文件,并设置“Adobe Acrobat 10.0types库”的引用,我想这个代码: Sub Main() Dim AcroApp As Acrobat.CAcroApp Dim theForm As Acrobat.CAcroPDDoc Dim jso As Object Dim text1, text2 As String Set AcroApp = CreateObject("AcroExch.App") Set theForm = CreateObject("AcroExch.PDDoc") Dim strFullPath As String strFullPath = Application.GetOpenFilename() theForm.Open (strFullPath) 'theForm.Open ("C:\temp\sampleForm.pdf") Set jso = […]

用双“For”循环标记区域

我正在尝试执行以下操作:我想将不同区域(以黄色标记)存储在一个string中。 第一个黄色区域是F7:G8,第二个是I7:J8等,使得该串变为:“F7:G8,I7:J8,L7:M8,F10:G11,I10:J11,L10:M11”。 所以在这个例子中,我有三个区域在右边,两个在下面。 右边和下边的区域数量可能会有所不同,所以我想要编码,我只需要指定向右和向下的区域。 请注意,第一个区域始终是F7:G8,所以我可以使用它作为参考。 现在,在下一个区域之前跳过的列数可能会有所不同,并且在下一个区域之前跳过的行数可能会有所不同。 所以我需要考虑。 我有以下的VBA代码: Sub test() ' ' test Makro ' ' Dim i As Integer, j As Integer k = 2 'areas downwards' l = 3 'areas rightwards' Dim area As String Let area = "F7:G8" 'first area, always the same' Dim Upper_letter As String Let Upper_letter = "F" Dim […]

在文本框中使用逗号

如果我为我的文本框使用下面的代码,当我input数字1,000,000并提交它与我的命令button它显示范围(“F1IMPG1”)为1 。 Range("F1IMPG1").Value = Val(txtF1IMP1.Value) 如果我不使用逗号,它会正确显示为1,000,000 。 有人知道为什么这可能是?

如何正确地写下面的嵌套For Each循环?

所以,我有一个数据sorting问题。 本质上,我必须排第2行的单元格在第1行的近似值之下。 数据通常会显示为: 但是我要求Row2的数据在它的Row1对象的近似值(在1.2之内)被sorting,如下所示: 我相信最好的办法是创build一个For Each循环的嵌套集合,如下所示: Dim F As Range Dim Q As Range For Each F In Range("A1:C1") For Each Q In Range("A2:C2") If Q.Cell.Value <= (F.Cell.Value + 1.2) Then F.Offset(1, 0).Value = Q.Cell.Value Exit For End If Next Q Next F 虽然这已被certificate是具有挑战性的 我的意图是反复检查Row1的值,并且,如果在Row2中find了具有必要条件的值,请将其置于Row1中的对应项下。 代码已经暂停,但是,由于“运行时错误'438':对象不支持此属性或方法”。 如何正确编写代码以避免这样或类似的错误? 非常感谢! 如果您有任何改进build议,请随时提出build议。 最好,

从其他工作簿复制/粘贴

我写了代码来复制和粘贴到我的工作簿从其他工作簿使用的范围。 在我的电脑中,它可以工作,但是当我发送给任何人时,粘贴过程导致错误信息: “此图片目前无法显示。” 目前的版本,我用xlPasteAll: Workbooks(fl.Name).Worksheets(sheetindex).Range("A2:P" & Lastrow).Copy Workbooks(fl.Name).Close Worksheets(sheetindex).Activate ActiveSheet.Range(Cells(startrow,1),Cells(rangeCount,16)).PasteSpecial xlPasteAll

将Excel图表复制/粘贴到PowerPoint并断开链接

我想复制粘贴几个图表使用VBA(Excel和PowerPoint 2013)的PowerPoint。 只要我不试图破坏Excel和PowerPoint之间的graphics连接 – 我绝对需要这样做,我的macros下面工作正常。 我查了一下Google,发现有人build议使用.Breaklink方法:只要在我的工作表上没有多于一个图表,我们就可以使用.Breaklink方法。 如果至less有两个graphics,它将正确复制第一个graphics,然后在第二个graphics上工作时抛出“MS PowerPoint已停止工作”消息。 我应该如何继续? 我试图在.Chart.ChartData和.Shape对象上应用.BreakLink方法无济于事。 Sub WhyIsThisWrong() Application.ScreenUpdating = False Dim aPPT As PowerPoint.Application Dim oSld As PowerPoint.Slide Dim oShp As PowerPoint.Shape Dim oCh As ChartObject Set aPPT = New PowerPoint.Application aPPT.Presentations.Add aPPT.Visible = True For Each oCh In ActiveSheet.ChartObjects oCh.Activate ActiveChart.ChartArea.Copy aPPT.ActivePresentation.Slides.Add aPPT.ActivePresentation.Slides.Count + 1, ppLayoutText Set oSld = […]

工作表()。范围()。公式不适用Excel VBA函数?

Excel VBA中使用“工作表()。范围()。公式”有问题。 如果我使用macros,它工作正常(请参阅下面的子方法)。 但是,如果我在一个函数中使用它,它不起作用,我有一个“#VALEUR!” (在法语中,我认为这将是#VALUE!英文)在CELL中的错误消息。 如何解决这个问题? 我正在使用EXCEL 2010 Sub StoreFormula() Worksheets("Sheet1").Range("D20").Formula = "='Sheet2'!D13" End Sub Function Test() As String Call StoreFormula Test = Application.Caller.Address End Function

将.xlx导入Oracle PL / SQL数据库

VBA将数据导入Oracle PL / SQL数据库时遇到问题。 我有这个脚本: sql = "insert into my_table (Name, Surname,Phone,Email,Date, time_1,Time_2,Note, Source, Change,State,Result) values ( '" & Cells(cellNumber, 1) & "' , '" & Cells(cellNumber, 2) & "' , '" & Cells(cellNumber, 3) & "' , '" & Cells(cellNumber, 4) & "', to_date('" & Cells(cellNumber, 5) & "'," & "'DD.MM.YYYY')," & " to_date('" […]

将工作簿中的命名范围及其值的导入/导出导出为.csv

我有一个.csv有两列:colA命名范围和colB有值。 现在,我需要从.csv中导入值,并将它们分配到多个工作表中的工作簿中的命名范围。 另外我需要以相同的方式导出相同的。 即一个工作簿已经命名了范围,显然有一些相关的值。 有没有办法导出相同的格式,以便我可以用它来导入它们以后? 对于导入,我修改了下面提供的代码,但仍然不成功: Option Explicit Sub impdata() 'This is to import data from csv to xlsm Dim MyCSV As Workbook Dim filename As String Dim curfilename As String Dim MyRange As Range Dim MyCell As Range Dim x As Long Dim y As Workbook curfilename = ThisWorkbook.Name filename = Application.GetOpenFilename Set y […]