Tag: 范围

MS Excel VBA – 循环遍历行和列(如果为空则跳过)

你好,stackoverflow社区, 我必须承认我主要是在MS Access中的代码,并且对MS Excel VBA有非常有限的经验。 我目前的目标是这样的,我有一个费用报告发送给我与扣除在另一个国家的货币,这个报告有很多列不同的帐户名称可能会填充或可能为空。 我目前有一个macros,将打开一个input框,并要求HostCurrency /美元汇率,我的下一步将开始在第一个logging(第14行;列AK包含扣除个人信息),然后跳到第一个扣除科目(扣除科目开始在列L和跨度列DG)检查每个单元格是否为空,如果它继续向右移动,如果它包含一个值,那么我想乘以我的FX利率variables在input框中input,并用收敛来更新单元格。 一旦最后一列(DG)被执行,我想移动到下一行(第15行),并一直重新开始这个过程,直到我的“已用范围”中的“LastRow”。 我非常感谢任何反馈,解释或链接,可能指向我的目标。 提前感谢您花时间阅读这个!

如何在VBA中引用表

我在工作表上放置一个button,以允许在表格中的两列中的所有项目大写。 以下是我在其他地方find的代码,并尝试进行工作: Private Sub CommandButton1_Click() With Range("B10", Cells(Rows.Count, "B").End(xlUp)) .Value = Evaluate("INDEX(UPPER(" & .Address(External:=True) & "),)") End With With Range("C10", Cells(Rows.Count, "C").End(xlUp)) .Value = Evaluate("INDEX(UPPER(" & .Address(External:=True) & "),)") End With End Sub 我希望范围引用表2,列1和2,而不是B和C. build议?

VBA拒绝空的范围的SpecialCells

我遇到与SpecialCells方法定义的Range有关的“For Each”问题。 当我运行下面的代码时,有一个“Next without For”错误,我相信这是因为当我第一次运行代码时rRange是空的。 我可以把“On Error Resume Next”放在sub的开始,但我试图避免这一点。 Public Sub Sub1() Set rRange = Worksheets("Combate").Range("69:99").SpecialCells(xlCellTypeConstants, xlNumbers) If Not rRange Is Nothing Then For Each c In rRange If c.Value <= turnoseg Then c.Offset(-2 * lincomb0 + 6).Value = c.Offset(-lincomb0 + 3).Value c.Value = "" Next c atualizarefeitos6 End If End Sub 在另一个子节点中,我运行下面的代码后,出现“未选中单元格”错误。 我真的不知道如何真正解决这些潜艇的错误,但你们肯定会知道。 Sub […]

引用命名单个单元格在另一个范围内复制粘贴

我想复制和粘贴数据集(表)的具体列与这两个function: 数据不会在已知行中开始 观察次数是未知的(数据的行数也是如此) 我使用find函数来获取数据的第一个和最后一个单元格的范围,但是我不知道如何在复制函数中引用它们。 以下是我想要做的一个例子: Sub prueba_copy() Dim sht As Worksheet Dim sht3 As Worksheet Dim LastRow As Long Dim FirstRow As Range Set sht = ThisWorkbook.Worksheets(Sheet1.Name) Set sht3 = ThisWorkbook.Worksheets(Sheet3.Name) Set FirstRow = sht.Cells.Find("TIPO DE USO", searchorder:=xlByRows, LookAt:=xlPart) ' the result is range: F4 LastRow = sht.Cells.Find("*", after:=Cells(1, 2), searchorder:=xlByRows, searchdirection:=xlPrevious).Row 'the result is: […]

如何调用由不同函数创build的数组?

我试图使用另一个用户定义函数中的用户定义函数创build的数组。 对于这个练习,我有两个独立的function。 第一个函数将从范围input创build一个数组,并将这些值相加(是的,我知道有一个excel内置sum函数,但这只是练习)。 第二个函数将调用在第一个函数中创build的数组,并将这些值与第二个范围input相加。 看下面的代码。 Function first_funct(list_1 As range) As Double Dim extent As Integer extent = list_1.rows.Count Dim main_array() As Double ReDim main_array(1 To extent) Dim i As Integer first_funct = 0 For i = 1 To extent main_array(i) = list_1(i).Value 'main_array will be used again in second function first_funct = first_funct + main_array(i) […]

非连续行的Excel范围到剪贴板

我有一个FindRange在我的Excel工作表中查找带有文本“€”(lblValutaTeken.Text)的行。 我需要做的是获取包含文本的行(多个!)并将其复制到剪贴板。 我的范围不是连续的行,这是我绝望的基础。 到目前为止我得到了这个 object[,] cellValues = null; try { Excel.Range currentFind = null; Excel.Range firstFind = null; var missing = Missing.Value; Excel.Range RangeWithValutaSigns = xlApp.ActiveSheet.Range("g1", "g500"); currentFind = RangeWithValutaSigns.Find(lblValutaTeken.Text, missing, Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, false, missing, missing); while (currentFind != null) { if (firstFind == null) { firstFind = currentFind; } else if (currentFind.get_Address(Excel.XlReferenceStyle.xlA1) […]

Excel的dynamic范围公式

我在Excel中创build了一个报告。 目的是将数据粘贴到数据选项卡中,并刷新工作簿以填充所有包含图表和透视表的选项卡。 我有其他列包含基于input的数据填充的公式。 每个提取将有不同数量的行,所以我希望这些列只能根据input数据中的行数进行填充。 有没有办法做到这一点,并避免不得不拖动公式或删除额外的公式? 像一个dynamic范围的forms? 例如:假设我的摘录有10行数据。 我有列A作为开放date和列B作为closuresdate。 如果我想让列C自动填充数据input周转时间(closuresdate – 开放date),我怎么能只做了10行? 让我们说下一个星期的数据提取有20行…我可以有列c填充所有20行这次不必拖动公式10多行下来? 我更喜欢做这个没有VBA,但如果有必要或最简单,这是好的…请帮助。

如何计算多年范围内的天数

有没有办法可以计算特定年份范围内的天数? 例如,(我的专栏是员工,开始date,结束date,DK =年份2009-2016年)如果我的开始date是1/5/2008,并且我的结束date是2011年6月9日,我想知道2008年,2009年,2010年和2011年之间的这段时间已经过去了很多天。 我试过以下 =IF(ISNUMBER(SEARCH(D$1,$B2))=TRUE,(DATEDIF($B2,$C2,"d"))/30,0) 但是只返回最早一年范围内的天数,如果范围跨越多年,则不分配下一年的天数。

Visual Basic Excel – 试图根据计数器复制单元格

所以我有一个列A,其中143到179的单元格可以填入数据,如果需要的话。 循环从A中获取数据,并删除尚未填充的单元格,除去所有空格(除了格式化所需的一些列表外),并将它们放入C列。 所以,问题在于脚本从143复制到179,即使只有4个单元格被填充,在复制到我们的系统时,由于存在巨大的空间,这些单元格看起来很奇怪。 有没有办法让它只是复制/select填充什么,例如C143:“C”和计数器? For i = 143 To 179 If i = 163 Or i = 165 Or i = 174 Then counter = counter + 1 If Cells(i, 1).Value <> "" Then Cells(counter + 143, 3).Value = Cells(i, 1).Value counter = counter + 1 End If Next i Range("C143:C179").Select Selection.Copy

VBA将Excel范围转换成图片并发送到Outlook,将文本写入正文

我想复制一个范围从受保护的Excel工作表,并将其粘贴到Outlook作为图片,写一些文本,并显示它。 我的代码首先粘贴文本,然后是图片,但同时删除文本。 但我希望两者,文本和文本下的图片(范围转换成Excel中的图片)。 任何人都可以帮助我如何得到它? Sub Send_Email() Dim r As Range Set r = Range("NR7:OD39") Dim outlookApp As Outlook.Application Set outlookApp = CreateObject("Outlook.Application") Dim OutMail As Outlook.MailItem Set OutMail = outlookApp.CreateItem(olMailItem) Dim StrFileName As String Application.DisplayAlerts = False Application.ScreenUpdating = False Sheets("table1").Select ActiveSheet.Unprotect Password:="blabla" ActiveSheet.Outline.ShowLevels RowLevels:=8, ColumnLevels:=8 r.Select r.Copy OutMail.Display Dim Email As Word.Document Set Email […]