Tag: vba

将数据复制到另一个工作表

我无法理解下面的函数在做什么。 该function本身具有将数据复制到工作Sheet History 。 但是,我不明白这是怎么回事? Sub histFunc() Dim Y As String Y = "R" & Range("G7").Value Sheets("Sheet History").Select Range("h17").Select Cells.Find(What:=Y, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , SearchFormat:=False).Activate Range(Selection, Selection.End(xlToRight)).Select Application.CutCopyMode = False Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False Sheets("Sheet Current").Select End Sub 任何build议这个macros如何运作? 我很感激你的回复!

IF-THEN语句中的单元比较循环

我需要将范围src.Range("A1:A" & 10)每个单元格与范围src3.Range("A1:A" & 3)单元格进行比较,并且仅在src单元格不等于任何src3单元格。 如果我手动列出每个比较(作为评论 – 我最终得到的结果,它的工作原理,但会有更多的比较范围)。 但是,当我尝试循环它时不会。 我不能把IF从那里分离出来。 我找不到替代品。 For temprow = 1 To rngSelectionTable.Rows.Count tempselected = rngSelectionTable(temprow, 2).Value Crit = rngSelectionTable(temprow, 5).Value If tempselected = True Then For Each r In src.Range("A1:A" & 10) 'If r <> 0 _ And r <> src3.Range("A1") _ And r <> src3.Range("A2") _ And r <> […]

如何将VBAmacros绑定到特定的单元格?

我正在处理一个Excel表格,在这个表格中,我将数据组织成行,并且需要一种方法来运行VBAmacros,它将根据特定行中的数据执行程序。 我正在努力实现的是find一种机制,让用户只需点击button就可以完成这个任务。 另外,用户应该能够复制现有的行(和macros触发器),并执行与新行相关的macros,而不必进行任何代码修改。 我到目前为止所尝试的是excelbutton,但它无法绑定到某个单元格。 每次添加新行时,也必须手动分配macros。 我也试着“Worksheet_SelectionChange”事件过滤到包含链接文本的某个列。 这样可以正常工作,但有些用户使用箭头键在表单内导航,如果macros单元格被选中,则会意外触发macros。 另外,鼠标光标在hover时不会变成指向手指。 最后一次尝试是尝试=HYPERLINK("#'Sheet1'!E3";"Run macro")function,并将其与“Worksheet_FollowHyperlink”一起使用。 但是,在这种情况下,如果超链接指向当前表单,则不会触发事件。 那么有没有什么新的想法,或者可以改进其中的一些来克服我所描述的问题?

将名称字段添加到基于列的combobox而不重复?

我在这里find这个链接: 基于列A中的值创build表的VBA代码 它告诉我如何基于第一张纸上的一列中的名称而不重复地创build列中的纸张列表。 我试图把这个代码翻译成可用于ComboBox,但我的VBA技能绝对是平淡无奇。 我到目前为止是 Private Sub form_load() Dim lastRow As Integer Dim cellName As Integer Dim match As Boolean lastRow = Sheets(1).Range("F2").End(xlDown).Row For i = 2 To lastRow match = False cellName = .Sheets(1).Range("F" & i).Value For _________________ ComboBox1.AddItem i End Sub 你会注意到在我链接的例子中,他们使用了代码 For Each ws In ActiveWorkbook.Worksheets If ws.Name = sheetName Then match […]

对象variables或块variables未设置(错误91)错误

我有以下工作更早的代码,但现在显示一个错误: Sub AttachLabelsToPoints() 'Dimension variables. Dim Counter As Integer Dim ChartName As String Dim xVals As String ' Disable screen updating while the subroutine is run. Application.ScreenUpdating = False 'Store the formula for the first series in "xVals". xVals = ActiveChart.SeriesCollection(1).Formula 'Extract the range for the data from xVals. xVals = Mid(xVals, InStr(InStr(xVals, ","), xVals, […]

Dim myConn As ADODB.Connection

我正在尝试几件事情,其中​​之一是将excel工作簿连接到AS400,以便在我们的系统中获得对部件号的描述,但试图保持连接处于打开状态,或者至less在工作簿closures之前。 有没有人有什么build议? Public Sub GetPartNumbers() Dim myConn As ADODB.Connection Dim myRS As ADODB.Recordset '' Dim selVal As String '' Dim selRow As Integer Set myConn = New ADODB.Connection myConn.ConnectionString = "Provider=SEQUEL ViewPoint;" myConn.Open Set myRS = New ADODB.Recordset

运行时错误7:内存不足,加速代码

我一直在解决这个问题已经有一段时间了,在这里的人们的帮助下,我设法提出了两个解决scheme。 第一个解决scheme工作,但我不能得到msgbox显示正确的信息。 下面的版本第一次工作, msgbox在msgbox中显示正确的数据,但如果我再次尝试运行代码,它会崩溃excel,并给我一个运行时错误7:内存不足。 它打破了: wsNew.Name = strWS ,它看起来总是试图创build工作表,即使他们已经存在。 我认为这可能与On Error Resume Next, If Len(Worksheets(strWS).Name) = 0 Then 。 无论如何可以加快这个代码吗? 目前它正在通过全球表格中的42行进行查看,但可能会出现数百条的情况,而此时它正在以合理的速度运行,只要我在全局表格中引入更多行,慢一点。 Private Sub CommandButton2_Click() Dim j As Long, strWS As String, rngCPY As Range, FirstAddress As String, sSheetsWithData As String Dim sSheetsWithoutData As String, lSheetRowsCopied As Long, lAllRowsCopied As Long, bFound As Boolean, sOutput As […]

匹配两张纸上的数据,如果颜色不同,则显示黄色

我正在试图检查两张表上的数据。 逻辑: 如果Sheet2上的ABC ABC数据与Sheet1上任何行上同一列上的数据相匹配,然后检查两张纸上的col E和col F,并在Sheet2上有不同的数据时将其着色为黄色 码: Option Explicit Sub CheckData() Dim wb, wn As Worksheet Dim i, j, m Dim strA, strB, strC, strE, strF, NstrA, NstrB, NstrC, NstrE, NstrF As String Dim FinalRowB, FinalRowN, count Set wb = Sheets(1) Set wn = Sheets(2) FinalRowB = wb.Range("A900000").End(xlUp).Row FinalRowN = wn.Range("A900000").End(xlUp).Row For i = 2 […]

创build如果下一个循环与多个variables(工作代码)

我有一张表,我用它来dynamic调整图表。 为此,我使用下面的代码,按照预期工作,但是由于我是VBA新手,所以在创build循环时遇到困难,因此我不必列出每个系列/类别。 总共有8个系列和17个类别。 – 系列filter(真/假)列在“ B27:B34 ”中, – 类别filter在“ C25:S25 ”中列出, 所有的工作表(3)。 有人可以帮我弄这个吗 ? 我的代码(缩写): Sub UpdateChart() Dim varSeries1 As String Dim varSeries2 As String Dim varSeries3 As String ' … Dim varCategory1 As String Dim varCategory2 As String Dim varCategory3 As String ' … varSeries1 = Worksheets(3).Cells(27, 1).Value varSeries2 = Worksheets(3).Cells(28, 1).Value varSeries3 = […]

如何将包含超过15位数字限制的单元格转换为实际值

我没有意识到所有版本的Excel允许的最大数量(最长15个数字)是有限的。 我已经通过手动input大量值来发现错误,只是发现在第一个15位数字被零影响之后,我失去了准确性。 这几乎是一个3小时的工作,看起来像我将不得不重复,除非有人知道一个办法来帮助我。 从那以后,我保存并退出了电子表格。 后来客户回到我这里说,我给他们的数字是不准确的,因为他们只有15位数的准确性。 然后,我在网上研究了这一点,发现我应该在超过15个字符的数字复制之前将文本格式设置为文本格式。 有谁知道是否有办法让数字回来,或者我是否会重新生成电子表格?