我需要dynamic构build一个下拉列表,在input特定文本到一个单元格后,我执行一些SQL,并从返回的行中构build一个Dropdown 。 事件如何集中在一个单元(而不是整个电子表格)的价值? 我必须在创buildDropdown之前将SQL行值“粘贴”到电子表格中? 是不是可以在VBA中填充Dropdown而不必将值粘贴到电子表格上,然后突出显示它们来创buildDropdown ? 谢谢
在VBA中有很多问题和很多处理Range / Array转换的问题。 我一直没有find一个可行的答案,所以我真的会赞赏一些帮助。 以下是我想要做的: Function RangeToArrayToRange(inputRange As Range) As Range Dim inputArray As Variant inputArray = inputRange 'operations on inputArray' '…' Dim outputRange As Range outputRange = inputArray Set RangeToArrayToRange = outputRange End Function 在此先感谢您的帮助!
使用MS Access VBA如何检查文件以了解它是否为Excel格式?
我有一个多张工作簿。 我按(function区)button和一个子例程保存多个表格作为.csv,popup一些Java代码,然后返回。 问题是:一旦它回来,工作簿已被转换为一个.csv文件(最后一个保存),没有进一步的.xlsm操作是可能的。 我该如何解决? 修订: 与Java或shell无关。 WHENEVER我这样做: Sheets("someSheet").SaveAs Filename:=someName, FileFormat:=xlCSV 这将整个工作簿更改为someSheet.csv。 然后,工作簿的行为变得怪异。 我没有能够保存为.csv而不改变任何东西。
Excel公式生成的超链接似乎有一个错误。 我正在使用Excel 2010.我有一个包含URL的单元格的电子表格,我的目标是做以下两件事情: 把这些单元格变成超链接。 创build一个键盘快捷方式来打开这些超链接,所以我不必使用鼠标。 要做#1,最初我只使用了函数=HYPERLINK() 。 所以,我的url是在列A ,我用这个公式来在B列超链接。 要做#2,我创build了下面这个应该用键盘快捷键Ctrl + H打开超链接的macros: Sub Open_Hyperlink() ' ' Open_Hyperlink Macro ' ' Keyboard Shortcut: Ctrl+h ' Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True End Sub 问题是,这个macros似乎只适用于不是使用公式创build的超链接。 例如,如果我只是input一个单元格http://www.google.com将自动使这个超链接和键盘快捷方式macros的作品,它不与公式生成的超链接。 我也注意到,当我右键单击公式生成的超链接时,下拉菜单中没有选项来打开超链接,但右键单击不是由公式生成的超链接时有这个选项。 我find了以下解决方法。 我没有使用公式生成超链接,而是使用了我在这里find的一个macros。 Sub HyperAdd() 'Converts each text hyperlink selected into a working hyperlink For Each xCell In Selection ActiveSheet.Hyperlinks.Add Anchor:=xCell, Address:=xCell.Formula Next xCell […]
我试图从Excel中创build一个VBA的XML文件,虽然我有点朦胧的细节,但在我的生活之前,我从来没有碰过XML或VBA。 我需要用以下格式写出一个XML文件: <TextField0 xfdf:original="Brand Name">HEADING1</TextField0> 会有一堆像这样的行,比如TextField1,它是“Product”等等。 我迄今为止对这一部分感兴趣的代码是这样的: 'create Heading element Set objXMLelement = objDom.createElement("TextField0") objXMLRootelement.appendChild objXMLelement 'create Attribute to the Heading Element and set value Set objXMLattr = objDom.createAttribute("xfdf:original") objXMLattr.NodeValue = "Brand Name" objXMLelement.setAttributeNode objXMLattr 这创造了这个输出: <TextField0 xfdf:original="Brand Name"/> 这当然是错过HEADING1,我不能为了我的生活弄清楚如何把那一点放在那里。 我似乎无法追加任何属性。 任何帮助将受到感谢。
我正在使用这个问题的function,但是,似乎并没有在我的情况下工作。 基本上,这个脚本正在经历一个列select不同的值和填充数组arr与他们。 首先If正在检查列是否已经结束,那么为了避免调用空数组我有第一个IfElse ,最后我想检查一个非空数组的cellstring。 如果不存在,我想添加它。 Public Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1) End Function Sub SelectDistinct() Dim arr() As String Dim i As Integer Dim cells As Range Set cells = Worksheets("types").Columns("A").Cells i = 0 For Each cell In cells If IsEmpty(cell) Then Exit For ElseIf […]
我有一个macros筛选表(在代码中作为ListObject),然后将DataBodyRange中的可见单元格复制到一个单独的表。 代码工作正常,除非过滤操作删除所有的数据(即表只有标题行,没有别的)。 有没有一个简洁的方法来检查是否有可见的行? 如果可能的话,我想尽可能地避免on error resume条款,但我正在努力想办法吗? 我在下面列出了一些伪代码来说明我的意思,任何援助将不胜感激! 亚当 If TargetTable.DataBodyRange.VisibleRows.Count > 0 Then TargetTable.DataBodyRange.SpecialCells(xlCellTypeVisible).Copy Destination:=OutputPasteRange End If
我是VBA的新手,并且在将一行中的行复制到另一个行中时遇到了一些问题。 我试图在这个论坛上寻找答案,尝试修改代码来适应我的要求,但不成功。 请帮帮我。 我需要在工作表的A列中searchno.s。 search应该从1号开始,然后是2号开始,然后是3号开始,依此类推。 无论何时find“1”,将整个行复制到“Sheet 1”。 完成search“1”后,开始“2”。 当find匹配项时,将整行复制到“工作表2”。 同样没有“3”等。 对其他no.s重复此search,直到A列结束。 我已经尝试了以下代码:注意:我将从1到预定义的值不等。 Dim wb1 As Workbook, wb2 As Workbook Dim ws1 As Worksheet, ws2 As Worksheet Dim copyFrom As Range Dim lRow As Long '<~~ Not Integer. Might give you error in higher versions of excel Dim strSearch As Integer Set wb1 = ActiveWorkbook Set […]
我在为我的macro达到预期的结果时遇到一些困难。 意图 : 我有一个数据sheets(input).column A (具有值的行数会有所不同,因此我创build了一个循环,将运行macros,直到活动单元为空)的数据列表。 我的macros从Range(A2) ,一直延伸到A列,只有当它到达一个空行时才停止 macros的期望结果将开始复制工作sheet(input).Range(A2)的单元格值粘贴到工作sheet(mywork).Range(B2:B6) 。 例如,如果“Peter”是单元格sheet(input),range(A2)的值sheet(input),range(A2)那么当marco运行并将值粘贴到sheet(mywork) range(B2:B6) 。 即范围B2:B6将反映“彼得” 然后macros循环回工作表(input)并复制下一个单元格的值并粘贴到range(B7:B10) 例如 :“Dave”是工作sheet(input) Range(A3) ,则“Dave”将被粘贴到工作sheet(mywork).Range(B7:B10)的下4行中。 B7:B10会反映“Dave” 再次重复相同的过程返回到表(input)这个时间range(A4) ,将值复制到工作表(mywork)并粘贴到B11:B15 。 基本上这个过程重复… sheet(input) column A为空时macros结束。 Sub playmacro() Dim xxx As Long, yyy As Long ThisWorkbook.Sheets("Input").Range("A2").Activate Do While ActiveCell.Value <> "" DoEvents ActiveCell.Copy For xxx = 2 To 350 Step 4 yyy = xxx […]