小编vac*_*cip的帖子

Range()VS Cells() - 运行时间

我在这个站点上看到了很多使用循环Range方法的VBA代码For:

Range("A" & i)
Run Code Online (Sandbox Code Playgroud)

与正确的Cells命令相反:

Cells(i,1)
Run Code Online (Sandbox Code Playgroud)

我总是知道Cells方式更快,部分是因为Range需要更长时间才能解决,部分原因是连接(&)是一个相对缓慢的过程(与任何其他简单的算术操作相反 - AFAIK).

所以,问题是,它真的更快吗?多少钱?有时,Range格式更具可读性,特别是对于新手.速度增益是否证明了轻微的不适以及回复中必要的额外解释?

excel performance vba excel-vba

12
推荐指数
1
解决办法
3134
查看次数

Azure SQL表 - > SQL Server视图 - >链接访问表:无法更新

所以我有这个可爱的菊花链:

  • Azure SQL数据库中的表(tblAzure)
  • 本地SQL Server数据库中的tblAzure视图(vwSQL)
  • Access中的链接表指向vwSQL(tblAccess)

虽然部分单独工作,但我无法从Access更新Azure表.

数据库之间的连接可以单独正常工作.我可以通过在vwSQL中插入值来更新tblAzure.我还可以通过链接的Access表更新SQL服务器中的表,甚至可以通过创建视图并将Access链接到该视图来更新表.我还可以通过在Access中打开的vwSQL看到tblAzure中的值作为链接表.

当我尝试更新或附加链接视图时,这是我得到的错误:

ODBC - 在链接表'tblAccess'上插入失败.

[Microsoft] [ODBC SQL Server驱动程序] [SQL Server] OLE DB提供程序"SQLNCLI11"链接服务器"azw"返回消息"参数不正确:.".(#7412)
[Microsoft] [ODBC SQL Server驱动程序] [ SQL Server]链接服务器"azw"的OLE DB提供程序"SQLNCLI11"报告错误.提供者报告一个或多个参数无效.(#7399)
[Microsoft] [ODBC SQL Server驱动程序] [SQL Server]无法执行此操作,因为链接服务器"azw"的OLE DB提供程序"SQLNCLI11"无法启动分布式事务.(#7391)

有人见过这样的事吗?我尝试将链接属性/服务器选项/分发服务器更改为True,但没有帮助.

基本思想是我需要一个在我们的数据库中完全同步的表,以及可由Access中的用户编辑的表.(不要问,我继承了太复杂的系统......)


测试脚本

在Azure中:

CREATE TABLE [dbo].[AzureTable](
    [AzureTableID] [int] NOT NULL,
    [SomeText] [nvarchar](50) NULL,
 CONSTRAINT [PK_AzureTable] PRIMARY KEY CLUSTERED ([AzureTableID] ASC)
 WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)
GO

INSERT dbo.AzureTable VALUES (1, N'Hello')
Run Code Online (Sandbox Code Playgroud)

在SQL …

sql-server ms-access database-connection linked-server azure-sql-database

9
推荐指数
1
解决办法
834
查看次数

用双引号命名单元格值:Excel VBA宏


我想在特定列的所有单元格中放置双引号.我已经写了代码来放双引号,但问题是它在值周围放了3个双引号.

 For Each myCell In ActiveWorkbook.Sheets("Sheet1").Range("B:B")
        If myCell.Value <> "" Then
            myCell.Value = Chr(34) & myCell.Value & Chr(34)
        End If
 Next myCell
Run Code Online (Sandbox Code Playgroud)

基本要求是根据B列拆分excel文件并将其另存为CSV文件.
在拆分字段中,B列和D列的值必须用双引号括起来.

完整代码:

Option Explicit

Sub ParseItems()
Dim LR As Long, Itm As Long, MyCount As Long, vCol As Long
Dim ws As Worksheet, MyArr As Variant, vTitles As String, SvPath As String
Dim myCell As Range, transCell As Range

'Sheet with data in it
   Set ws = Sheets("Sheet1")

'Path to save files into, remember the final \ …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

5
推荐指数
1
解决办法
1997
查看次数

我可以使用FileSystemObject使用其索引从文件夹中获取单个文件吗?

如果文件夹中只有一个文件,我可以在知道其名称的情况下选择它或者遍历文件夹中的文件吗?

(代码是VBS,但它可以是任何东西,FSO在这里是有趣的部分.)

这不适合我:

dim fso
set fso = CreateObject("Scripting.FileSystemObject")
dim myFolder
Set myFolder = fso.getFolder("E:\test")
Dim myfiles
Set myfiles = myFolder.Files

WScript.Echo myfiles.Item(0).Path
Run Code Online (Sandbox Code Playgroud)

两者都没有WScript.Echo myfiles(0).Path奏效.(测试指数0,1都失败了.)

使用for each来获得一个文件似乎有点过分.此外,我不应该以某种方式迭代一个简单的For循环,而不是For Each?所以必须有索引......我似乎无法找到它们.

vbscript filesystemobject fso

2
推荐指数
1
解决办法
3469
查看次数

Excel:VBA 保留来自其他用户的清除内容事件的公式

问题

\n\n

我在 Excel 文件中为 15 人的团队管理加权决策矩阵。文件中有 10 列包含公式。这些公式根据用户在其他单元格中选择的选项计算总加权分数。

\n\n

有时用户需要删除条目。我的团队的常见删除方法包括选择整行并执行以下操作之一:

\n\n
    \n
  • 按删除键。
  • \n
  • 右键单击并选择“清除内容”。
  • \n
  • 从“主页”选项卡上的“编辑”组中选择“清除内容”。
  • \n
\n\n

所有这些方法还清除了计算加权分数的公式。

\n\n

上面描述的方法对于我的团队中的大多数人来说都很直观,所以我\xe2\x80\x99d希望找到一种方法让人们在不清除公式的情况下使用这些方法。

\n\n

梦想

\n\n

允许用户在使用上述任何方法清除单元格时清除除公式 之外的所有内容。

\n\n

我尝试过的事情

\n\n
    \n
  • 仅锁定公式单元格。这可以防止用户清除公式,但当他们选择整行时,\xe2\x80\x99 无法清除其他单元格中的内容,因为该行中的公式单元格被锁定。

  • \n
  • 下面的宏。该宏将清除常量并保留公式,但当“清除内容”事件发生时,我无法让它自动触发。我担心,期望我的团队的所有成员都运行此宏而不是使用常规方法来清除内容是愚蠢的事情。

    \n\n
    Sub ClearOnlyValues()\n  Dim Cel As Range\n\n  Application.EnableEvents = False\n  Application.Calculation = xlCalculationManual\n\n  For Each Cel In Selection\n    If InStr(Cel.Formula, "=") = 0 And Cel.Value <> "" Then\n     Cel.ClearContents\n  End If\n  Next Cel\n\n  Application.EnableEvents = True\n  Application.Calculation = xlCalculationAutomatic\n\nEnd Sub\n
    Run Code Online (Sandbox Code Playgroud)
  • \n
  • 谷歌。我能找到的唯一宏必须在每次您想要清除内容时手动运行,并且无数帖子演示了清除常量的“转到特殊”方法。请参阅上面的傻瓜的任务。如果他们不能直观地清除细胞,我们就会陷入混乱。猫和狗住在一起。这将是无政府状态。

  • \n
  • 比我聪明得多的高级 …

excel vba

1
推荐指数
1
解决办法
2万
查看次数

Azure SQL 显示本地时间

我正在尝试以本地时间显示日期时间值。默认情况下,Azure SQL 数据库以 UTC 存储日期和时间,没有办法解决这个问题。(从内部部署的 SQL Server 迁移时这很痛苦。)我想以中欧时间显示存储的时间值。

现在当地时间是 11:30 (CET)。UTC 时间是 10:30。

DECLARE @TestTime DATETIME;
SET @TestTime = '2016-11-02 10:30:00'

SELECT @TestTime
--Returns 2016-11-02 10:30:00
SELECT @TestTime AT TIME ZONE 'Central European Standard Time'
--Returns 02 November 2016 10:30:00 +01:00
Run Code Online (Sandbox Code Playgroud)

我需要以某种方式返回 2016-11-02 11:30:00。现在是有趣的部分:

正如这里所建议的:

SELECT convert(DATETIME,@TestTime AT TIME ZONE 'Central European Standard Time',1)
--Returns 2016-11-02 09:30:00 So instead of adding the timezonedifference it subtracts it.
Run Code Online (Sandbox Code Playgroud)

这有效,但让我恶心:

SELECT DATEADD(MINUTE,DATEPART(tz,@TestTime AT TIME ZONE 'Central European Standard Time'),@TestTime)
--Returns 2016-11-02 …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server timezone azure-sql-database

1
推荐指数
1
解决办法
2132
查看次数

如何使用Powerpoint中的VBA宏检查文件是否存在

我想在运行代码之前检查文件是否已经存在.如果它存在而不是退出,否则保持我的代码运行.我写的是以下代码:

Private Sub CommandButton21_Click()

If FileFolderExists("C:\Users\Moez\Desktop\Macro_Project\Test1.pptm") Then
    MsgBox "Modification already done!"
Else
    deleteTextBox
    AllBlackAndDate
    LastModifiedDate
    SaveAllPresentations "C:\Users\Moez\Desktop\Macro_Project\Test1.pptm" ' save here
End If

End Sub          
Run Code Online (Sandbox Code Playgroud)

powerpoint vba powerpoint-vba

0
推荐指数
1
解决办法
6955
查看次数