是否有一个简单的(单行)在VBA中搜索数组中的字符串?或者我是否需要遍历每个元素并将其与目标字符串进行比较?
编辑:这是一维数组.我只需要知道如果字符串在数组中的某个位置.
IE:
names(JOHN, BOB, JAMES, PHLLIP)
Run Code Online (Sandbox Code Playgroud)
我怎么知道阵列中是否有"JOHN",它需要是最小的,因为它将重复约5000次,我不希望该功能减慢整个过程.
我使用的SQL DB迁移到新服务器后出现问题.现在,当尝试在Access(表单或表格)中编辑记录时,它说:WRITE CONFLICT: This record has been changed by another user since you started editing it...
有没有明显的原因.没有人使用服务器,我已禁用表上的任何触发器.我刚刚发现它与NULL有关,因为没有的记录没有,但是有些NULL的行不是.可能与索引有关吗?如果它是相关的,我最近开始每天上传BULK,而不是一次使用来自Access的INSERT INTO.
我有一个包含5000个记录和日期列的表.
我如何找到这些日期的平均值.我试过了AVG(datefield)
,但它说Operand data type datetime is invalid for avg operator
我在SQL Server中设置了一个可以正常工作的存储过程.我现在可以从VBA调用它,但想要返回一个值来知道是否有任何错误等.我的SP中的最后一个参数设置为OUTPUT:
@DataSetID int = 0,
@Destination char(1)='-',
@errStatusOK bit OUTPUT
Run Code Online (Sandbox Code Playgroud)
我的VBA调用SP是在下面,但它现在不起作用,添加新参数后我不知道我哪里出错了,我一直得到3708 - Parameter object is improperly defined. Inconsistent or incomplete information was provided.
:
Set cnn = New adodb.Connection
cnn.ConnectionString =
"DRIVER=SQL Server;SERVER=SERVER\SERVER;DATABASE=a_db;Trusted_Connection=Yes"
cnn.Open cnn.ConnectionString
Set cmd = New adodb.Command
cmd.ActiveConnection = cnn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "stprMoveDataSet"
Set param = cmd.CreateParameter
("@DataSetID", adInteger, adParamInput, , stDataSet)
cmd.Parameters.Append param
Set param = cmd.CreateParameter
("@Destination", adChar, adParamInput, 1, stDestination)
cmd.Parameters.Append param
Set param = cmd.CreateParameter
("@errStatusOK", adBit, adParamReturnValue) …
Run Code Online (Sandbox Code Playgroud) 我有以下代码,可以很好地将整个单元格复制到新目的地.
Dim ws As Worksheet, rng As Range
Set ws = Sheets("Duplicates")
Set rng = ws.Range("A2")
rng.Copy Destination:=Range("A2:A" & Range("G" & Rows.Count).End(xlUp).Row)
Run Code Online (Sandbox Code Playgroud)
paste special
.编辑:
是的,我们得出的结论是,您不能在与副本相同的行上使用特殊粘贴.我还发现,你可能不希望这样.
如果从记录1复制公式并将其粘贴到所有记录中VALUES
,您将获得复制的第一个记录的公式值.
这不是我想要的.因此,您必须将公式作为公式复制到所有记录,然后复制这些公式并粘贴为值.
Dim ws As Worksheet, rng As Range
Set ws = Sheets("Duplicates")
Run Code Online (Sandbox Code Playgroud)
设置第一个范围(带公式的单个单元格),然后根据Col将内容复制/粘贴到电子表格的底部G
:
Set rng = ws.Range("A2")
rng.Copy Destination:=Range("A2:A" & Range("G" & Rows.Count).End(xlUp).Row)
Run Code Online (Sandbox Code Playgroud)
从第二行向下选择新粘贴的formule.复制它们.然后将内容作为值粘贴到同一位置.
Set rng = ws.Range("A3:A" & Range("G" & Rows.Count).End(xlUp).Row)
rng.Copy
rng.PasteSpecial (xlPasteValues)
Application.CutCopyMode = False
Run Code Online (Sandbox Code Playgroud) 我正在使用以下代码生成一个canvas
.目前它将canvas元素添加到body
,我如何才能将它添加到div
命名的"divGameStage",它不嵌套在任何其他元素中,除了body
.
编辑:我已经尝试了第一个建议,但没有出现画布,完整代码如下:
<head>
<meta charset="utf-8">
<title>Game Stage</title>
<script type="text/javascript">
function loadCanvas(id) {
var canvas = document.createElement('canvas');
div = document.getElementByID(id);
canvas.id = "CursorLayer";
canvas.width = 1224;
canvas.height = 768;
canvas.style.zIndex = 8;
canvas.style.position = "absolute";
canvas.style.border = "1px solid";
div.appendChild(canvas)
}
</script>
</head>
<body>
<header>
<h1>The most important heading on this page</h1>
<p>With some supplementary information</p>
</header>
<div id="divControls"></div>
<div id="divGameStage"></div>
<script type="text/javascript">
loadCanvas(divGameStage);
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个Pivot表,但得到了Invalid Procedure Call or Argument
.
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="rng", Version:=xlPivotTableVersion14).CreatePivotTable TableDestination:="rngB", TableName:="pvtReportA_B", DefaultVersion:=xlPivotTableVersion14
Run Code Online (Sandbox Code Playgroud)
rng
(源)是由大约20列和几千行组成的范围.rngB
(目标)是不同工作表中的单个单元格谁能告诉我哪里出错?
编辑:
我的错,我本来应该使用rngData
而不是rng
作为来源.
Set rng = wsA.Range("C14")
Set rngData = Range(rng, rng.End(xlToRight))
Set rngData = Range(rng, rng.End(xlDown))
Set rngB = wsB.Range("C8")
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=rngData, Version:=xlPivotTableVersion14).CreatePivotTable TableDestination:=rngB, TableName:="pvtReportA_B", DefaultVersion:=xlPivotTableVersion14
Run Code Online (Sandbox Code Playgroud)
这使得数据透视表框架很好.
我有一个更新触发器,可以更新表中的一些重要状态字段tblCurrent
。
当我第一次将每日一批记录上载到tblCurrent
(大约10K条记录)时,我会通过三个单独的存储过程执行一些UPDATE,而这些过程是在第一次上载时才执行的。如何防止在这三个初始UPDATE期间运行更新触发器?
我已经使用下面给出的建议更新了代码,我已经测试并且工作得很好,以便为将来的用户提供快速参考.
我正在使用以下代码创建链接表而无需为每个用户设置DSN,如何指定主键,因为如果手动连接则会询问您:
Dim sConnect As String
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Set db = CurrentDb
Set tdf = db.CreateTableDef
tdf.Name = "dbo_vwFeedback" ' - -- --- This is the Label that you see in Access...
tdf.Connect = "ODBC;DRIVER=SQL Server;SERVER=server01\serverinstance;DATABASE=db_name;Trusted_Connection=Yes"
tdf.SourceTableName = "vwFeedback" ' - -- --- This is the actual name in SQL Server, minus the owner.
db.TableDefs.Append tdf
CurrentDb.Execute "CREATE UNIQUE INDEX PK_dbo_vwFeedback_PrimaryKey ON dbo_vwFeedback (DataSetID, FeedbackRef) WITH PRIMARY"
Run Code Online (Sandbox Code Playgroud)
注意:以上是针对SQL Server VIEW,它对于SQL Server TABLE是相同的,但您不需要该CurrentDB.Execute
行(如果您的主键在服务器上正确设置). …
我有两个弹出窗体(父/子),我希望能够根据屏幕的大小自动重新调整大小.
如何检索屏幕大小以实现此目的.
vba ×5
sql ×4
sql-server ×4
ms-access ×3
access-vba ×2
excel ×2
excel-2010 ×2
excel-vba ×2
arrays ×1
canvas ×1
forms ×1
html ×1
html5 ×1
javascript ×1
recordset ×1
triggers ×1