这是excel的VBA中的一个循环示例。
Sub Tests ()
Dim a As Integer
Dim b As Integer
b = 5
For a = 1 to b
MsgBox a
Next a
End Sub
当我在a中删除Next a时,脚本仍然正常运行。那么为什么我们要有Next a而不是Next呢?
我试图从动态数组中调用一个值,以便稍后在VBA函数中使用,但如果不抛出一个数组,则无法调用它。这里怎么了?
我试图更改数组类型和调用方法,但错误不断出现。
Dim lastColumn As Integer
Dim defaultWidth As Double
defaultWidth = 8.11
lastColumn = 30
'Declare array for column width
Dim widthArray() As Double
ReDim widthArray(lastColumn)
For c = 1 To lastColumn
widthArra
我使用VBA将信息输出到一个Excel工作表中,该工作表是从名为"PHB“的Server数据库中收集的。我可以通过调用一个视图连接到数据库并提取信息。
当我将数据转储到Excel工作表中时,会包含数据库数据的列标题,我不想这样做。我必须使用偏移量来使数据看起来正确。我可以使用VBA操作结果工作表并删除列。如果有一些开关,我可以使用任何一个(VBA或T)终端,这似乎是一个更干净和更简单的方法。
以下是我的逻辑的相关部分:
Public Sub Show_ProductCode()
Dim PHB_cnn As Ne
我很难将内置的Excel函数传递给一个单元格。它一直在返回"Run-time error '1004': Application-defined or object-defined error".
基本上,我要做的是使用VBA创建一个平均/平均的动态演算。
With Sheets("TC7_DATA")
LastColumn = .Cells(4, Columns.Count).End(xlToLeft).Column
For i = 1 To Rows.Count
If (.Cells(i, 3).Value =
我有数以万计的数据需要从远程客户端插入到MySQL InnoDB表中。客户端(Excel VBA over MySQL ODBC connector通过ADO)既可以生成一个CSV并执行LOAD DATA LOCAL INFILE,也可以准备一个庞大的INSERT INTO ... VALUES (...), (...), ...语句并执行该语句。
前者需要一些来克服 (它只在系统区域设置的默认代码页中编写CSV,在许多情况下是单字节字符集,因此非常有限);但建议它可能比后一种方法快20倍(为什么?),后者也“感觉”由于SQL命令过长而不太稳定。
我还不能对这两种方法进行基准测试,但我非常有兴
一般问题..。
如果我在VBA代码(基于Excel)中挂起/退出/中断'For‘循环,会有什么危险?
下面是我的代码:
For i = 1 to Sheets.Count
'check stuff
'do stuff
if MsgBox("blah blah", vbyesnocancel, "blah") = vbyes then
'do stuff
GoTo loopescape
End if
Next
loopescape:
'rest of c
我正在尝试使我的数组调整到我工作簿中工作表数的长度,但一直保持
下标超出范围
关于上下文,我的工作表名是“年份XXXX”。
Dim sheetsForCalendar() As Integer
For Each Worksheet In ThisWorkbook.Sheets
Dim i As Integer: i = 0
Dim calendarYear() As String: calendarYear() = Split(CStr(Worksheet.Name))
ReDim Preserve sheetsForCalendar(i)
所以这比你典型的
strSQL = "sql string where & forms!myform.variable & "stuff"
我有一个表,它会改变,用户会给它添加新的年份。因此,明年将是新的2015年数据。我为每年创建了一个带有复选框的表单,这个表单是基于这个sql的。
select year from table group by year
如果用户将复选框标记了若干年,我希望根据用户复选框的选择在vba中编写一个查询。例如,假设我现在有3年,2012年,2013年,2014年,用户只标记2012年和2014年,跳过2013年看起
可以在excel工作表中创建while循环吗?我不想使用VBA或其他工具,只想使用excel工作表。我正在寻找一种通用的解决方案来解决以下问题:
condition_met = False
while not condition_met:
...
...
if (some_condition):
condition_met = True
在下面的子例程中,我故意用0除以造成错误。第一次发生此错误时,它跳转到名为“errHandler”的处理程序,第二次发生错误时,执行停止,并引发‘除法0’错误。
如何确保每个错误都跳转到“errHandler”?
(这是我正在编写的SQL + VBA程序的核心问题)
Sub errorTest()
Dim i As Long
For i = 0 To 2
On Error GoTo errHandler
Debug.Print 8 / 0
continue:
Next i
Exit Sub
errHandler:
Err.Clear
On Error GoTo 0
Go
我有一个定期运行的VBA脚本。根据不同的时基,它运行不同的模块。我遇到的一个问题是,模块似乎过早退出了,这是我以前没有经历过的。这让我开始质疑我的方法。我的理解是,无论模块在什么情况下运行,module.sub都不会结束或退出,直到它结束或退出。我说错了吗?
Private Sub tmr1Sec_Change()
timeBase = seconds Mod 5 'Set a 4 second time base
Select Case timeBase
Case 1 To 2
errorPosition
我使用的是VBA的While...Wend循环。
Dim count as Integer
While True
count=count+1
If count = 10 Then
''What should be the statement to break the While...Wend loop?
''Break or Exit While not working
EndIf
Wend
我不想使用‘`While count<=10...Wend’这样的条件
我的VBA代码有问题。我试着比较两列,A列和B列。如果某些数据匹配,例如,假设A2包含B3中的文本,那么我需要将单元格C2与列D进行比较。我不明白为什么,但是我得到了错误“如果没有块,如果没有阻塞,如果”。非常感谢你们的帮助。
这是我的代码:
Sub Compare()
For i = 1 To 100
For j = 1 To 50
If InStr(1, ActiveSheet.Cells(i, 1).Value, ActiveSheet.Cells(j, 2).Value, vbTextCompare) <> 0 _
Then For k = 1 T
首先,我想指出我是VBA excel编码的初学者。我似乎不知道如何在循环中为以下问题编写循环代码:我的excel在D列中有以下信息: D2:12,D3:12,D4:5
我尝试自动化E列,如下所示: E1到E12将是D2中的信息,E13到E25将是D3中的信息。等等。直到某个已建立的阈值。
我目前已经编写了以下代码:
Sub salairemensuelle()
Dim xrow As Integer, xcol As interger, n As Integer, nbrdecolonnedemois As Integer
xrow = 2
xcol = 4
Do Until Ce
我试图在VBA中创建一个对象列表,但似乎没有创建新的对象,而且值正在被更新为类的单个实例。
这是一堂课
' ---------------------------------------------------------------
'
' Class to represent Program Increment
'
' ---------------------------------------------------------------
Public name As String
Public sprints As New Collect
很抱歉,如果这已经发布了-我找不到一个特定于Excel (也是因为我的糟糕的代码,我缺乏经验的VBA)。我试图将多个文件整理到一个工作簿中,在不同的工作表下。它大部分都在工作,但是在If Else语句中,如果满足了条件,循环就会中断,而不是继续处理文件夹中的其余文件。其他部分是循环的。我认为Do While filename <> ""会覆盖if/ that语句。
它不适用于我只是添加“和循环”(猜测这是无效的代码),所以我不知道我应该添加什么,或者我是否应该绕开这条路。
谢谢你的帮助!
Sub AllFiles()
Dim folderPath As St
我正在从事一个项目,以跟踪利润和损失从账单的立场。我们有一个单位成本,我用它来跟踪费用。最终用户希望能够在更新表之前不时地更改每件成本。我正在尝试使用宏从Excel工作表中的sheet3单元格B2中取值,以便更新SQL server中的表。我遗漏了一些东西,因为当我运行宏时,它不会更新表。谁能告诉我我错过了什么。这是我第一次尝试使用VBA,所以我暂时卡住了。 Sub UpdateSQLData()
Dim cnn As ADODB.Connection
Dim MySQL As String
Worksheets("Sheet3").Visible = True
Wor
我不是经验丰富的VBA程序员,我需要社区来寻找Excel的问题。
我的问题是,在Excel中,代码在下面一行之后立即停止执行:Application.ScreenUpdating = True
我使用来自msdn网站的以下示例代码:
Dim elapsedTime(2)
Application.ScreenUpdating = True
For i = 1 To 2
If i = 2 Then Application.ScreenUpdating = False
startTime = Time
Worksheets("Sheet1").Act
我是Microsoft Access和VBA的初学者,我目前正在开发一个模型,其中我有关于150+芯片ID表的信息。我在窗体上有一个文本框/组合框供用户选择某个芯片ID。在选择他们想要的芯片ID后,我让VBA在后台运行以检查与芯片ID同名的表。我通过将变量声明为字符串并使用Dlookup来实现这一点。我还使用记录集创建了一个将数据组合在一起的新表。
下面是我的VBA代码:
Private Sub APLCombo_AfterUpdate()
Dim I
TestQ APLCombo.ItemData(I)
End Sub
Public Sub Te
我必须重构一个旧宏,它在新的MS 365版本中失败了.
对于kernel32和User32,我在顶部声明了函数变量,如下所示:
#If Vba7 Then
Declare PtrSafe Function lstrcpy Lib "kernel32" (ByVal lpString1 As Any, ByVal lpString2 As Any) As LongPtr
#Else
Declare Function lstrcpy Lib "kernel32" (ByVal lpString1 As Any, ByVal lpString2 As Any
我想要在筛选的表列中的所有单元格都包含一个值时运行VBA代码。我希望形状仅在列中的每个单元格都有值时才可见,否则我希望它保持隐藏状态。 我在Excel VBA中使用以下代码: Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Set rng = Range("Table1[Verify]").SpecialCells(xlCellTypeVisible)
Dim i As Range
For Each i In rng.Cells
If i.Value <> ""
我想使用一个单元格值来确定最大列和行长度,以便在达到最大列/行长度时循环到下一列 我已经有了" for“命令,但不知道如何在VBA中编写代码来检查数据集的最大值。列和行长度 Sub Val-Click()
Dim datdate
Dim cell as range
Dim j as long, dim i as long
For i=2 to 3
For j=3 to 8
If Sheet!Z.cells(j,i).Value = "" then
Sheet!Z.cells(j,i).Interior.Color=vRed
我的代码有问题,出现了一个错误,我不明白为什么。错误是:
“编译错误:没有For的下一步”
我不明白为甚麽会这样。我是编程新手,所以任何帮助和评论都是非常受欢迎的。
这是代码,下一个没有For的代码提供了一个注释。
Sub CGT_Cost()
startrow = Worksheets("GUTS").Cells(10, 1) 'Here I put 1
endrow = Worksheets("GUTS").Cells(11, 1) 'Here I put 1000
For x = endrow To startrow Step -1
我想要一个excel文件保存(戳时间)每30分钟,并通过电子邮件本身给我。我已经将文件保存并发送给我。但是,当我尝试连续30分钟这样做时,我遇到了问题。下面是我的代码,大家有什么想法吗?我试着做一个循环函数,所以当A1 =0时,它会继续运行,但当我点击停止按钮时,它会改变A1 = 1,基本上停止。我也希望能够运行这个程序,并且仍然能够使用excel而不被打扰,你有什么想法吗?
Option Explicit
Private Sub CommandButton1_Click()
Range("A1").Value = 0
Do While Range("A1")
因为我是VBA的新手,我有一个问题。
我有一列整数,我想除以60。列为"X“。这是我的密码:
For Each element In Worksheets("parsed").Range("X1:X" & MaxRows).Cells
element.Value = element.Value / 60
Next
但我总是得到“类型错配”。我做错什么了?
我在access中有两个表
这就是我需要的:
1. if the PK from table1 exists in table2, then delete the entire record with that PK from table2 and add the entire record from table1 into table2
2. if the PK does not exist then add the record
我需要有关sql语句和VBA的帮助
我猜VBA应该是一个循环,遍历table1中的每条记录。在循环中,我应该有select语句
我在VBA中有这段代码,我想提取obj-amount div类的'15‘。有什么建议吗?
<div class="obj-amount">15<span class="unit">$</span></div>
Set divtags = oHtml.getElementsByClassName("obj-amount")(0).getElementsByTagName("obj-amount")
i = 0
For Each oElement In divtags
S
我是VBA的新手,希望这里的人能在以下方面帮助我:
我想使用VBA打开一个网站,然后在这个网站上点击两个不同的按钮。
我面临的挑战是:
1)如何让代码等待网页完全加载,以确保要单击的按钮实际上是可见的?
2)如何使用按钮的唯一ID正确定位按钮?
到目前为止我的代码:
Dim varResults As New DataObject
Dim varButtonID As String
Dim i As Long
Dim objIE As Object
Dim objElement As Object
Dim objCollection As Object
varResults.SetText
在我的excel文件中,有一个表如下所示:
|Name| Mail Address | Return|
|ABC | abc@example.com | no |
|DEF | def@example.com | yes |
|GHI | ghi@example.com | no |
现在,我想用VBA向表中的每个人发送一封电子邮件,该邮件的“返回”栏中的值为"No“(C)。
我的代码是这样的:
Private Sub CommandButton2_Click()
Dim OutApp As Object
Dim OutMail As O
当时我正在编写一些遗留代码,并偶然发现了一些对我来说很新、很有趣的东西。
VBA proc有一个声明和赋值的变量。在For循环中,相同的变量用作迭代变量。循环工作良好,并生成正确的result.Soemhow变量同时保留两个值,a。(按代码b.分配的值)在For循环中分配的值,我想要理解的是如何分配?它是一个不太为人所知的/hidden VBA特性,还是我只是过度思考而忽略了一个非常基本的概念?请参阅示例代码和注释。
Sub test()
Dim lTest As Long
'/ Assignment here.
lTest = 10
我想知道为什么这个简单的代码在我试图运行它时会抛出一个“对象所需”的错误。我真的找不到任何理由,为什么VBA会有困难和这一点。它编译OK,但无法运行。
Sub Test()
Dim X, Y, Z As Range
Set X = Sheets(1).Range("A1")
Set Y = Sheets(2).Range("A1")
Set Z = Sheets(3).Range("A1")
With X And Y And Z
.Value = "Test" 'FAILS HERE
End With
End
我用VBA编写了一段代码,将选定的列从一个工作表复制到另一个工作表。
For i = LBound(Accounts) To UBound(Accounts)
For j = 1 To EndRowJE
If Accounts(i) = shJE.Range("A" & j).Value Then
shJE.Range("A" & j, "X" & j).Copy shReport.Range("A" & r, "X" & r)