小编Cam*_*ilB的帖子

如何在Workbook_BeforeSave之前阻止Excel触发Worksheet_Change?

更新:问题已解决我的 一位同事正在更改单元格Workbook_BeforeSave()而不禁用事件,因此触发Worksheet_Change().是的,愚蠢,但至少这是我们的错,而不是Excel

我注意到每当我在Excel中按Ctrl + S时,都会Worksheet_Change()被触发Workbook_BeforeSave().是否有可能使用VBA代码来抑制此行为,但不会压制所有事件(即没有Application.EnableEvents = false)?

无论我在做什么,都会发生这种情况.我读过有关ComboBoxes有类似问题的人,但我没有编辑ComboBoxes,但Worksheet_Change()在保存之前总会激活.

有任何想法吗?我只是试图弄清楚如何在Worksheet_Change()保存文档时绕过一些代码,因为该代码只应在用户实际更改内容时执行,而不是在保存工作簿时执行.储蓄绝不会改变......

excel events vba

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

使用VBA刷新在Excel中对VBProject.VBComponents所做的更改

我一直在Excel中遇到一些奇怪的怪癖,同时以编程方式删除模块,然后从文件中重新导入它们.基本上,我有一个名为VersionControl的模块,它应该将我的文件导出到预定义的文件夹,并根据需要重新导入它们.这是重新导入的代码(下面介绍了它的问题):

Dim i As Integer
Dim ModuleName As String
Application.EnableEvents = False
With ThisWorkbook.VBProject
    For i = 1 To .VBComponents.Count
        If .VBComponents(i).CodeModule.CountOfLines > 0 Then
            ModuleName = .VBComponents(i).CodeModule.Name
            If ModuleName <> "VersionControl" Then
                If PathExists(VersionControlPath & "\" & ModuleName & ".bas") Then
                    Call .VBComponents.Remove(.VBComponents(ModuleName))
                    Call .VBComponents.Import(VersionControlPath & "\" & ModuleName & ".bas")
                Else
                    MsgBox VersionControlPath & "\" & ModuleName & ".bas" & " cannot be found. No operation will be attempted for that module."
                End If
            End If
        End If …
Run Code Online (Sandbox Code Playgroud)

memory version-control excel vba flush

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

try-except内部的更改在捕获异常后仍然存在



因为我第一次学习了异常处理(不是在Python中),所以我觉得当你开始一个try块时,就像你开始在沙盒中写一样:如果发生异常,那么发生在尝试块会像它从未发生过一样.令我天真的惊讶,我注意到这不是真的,或者不是我认为的方式,至少在Python中.这是我在Python中的实验:

>>> a = range(5)
>>> a
[0, 1, 2, 3, 4]
>>> try:
...     a.append(5)
...     oops
... except:
...     raise
... 
Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
NameError: name 'oops' is not defined
>>> print a
[0, 1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

如您所见,我更改了try块中的列表,然后触发了一个错误,该错误被引发.我期待看到原始形式的列表[0, 1, 2, 3, 4],但a.append(5)持续存在.

我的期望首先是错的吗?也许部分错误的期望(可能有一个沙箱,但它不是那样)?

python exception-handling

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

如何选择类别页面作为Pelican网站的主页?

我希望我网站的访问者能够进入类别页面,而不是默认页面index.html。我希望他们首先看到“新闻”类别中的文章。

也许有一种方法可以告诉Pelican输出category/newsindex.html?我知道在使用该save_as字段的普通手写页面上可以做到这一点,但是如何使用Pelican生成的自动页面来做到这一点呢?

python static-site pelican

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

将Netlogo源文件包含在另一个中

如何将一个Netlogo文件中的过程包含在另一个文件中?基本上,我想将遗传算法的代码与我的(相当复杂的)适应度函数分开,但是,显然,我希望健身记者(将驻留在"fitness.nlogo"中)可用于遗传算法代码,可能是"genetic.nlogo".

如果可以完成,如何导入过程,并执行代码?它是否像Python一样,导入模块几乎执行模块中的所有内容,或者像C/C++那样,文件是盲目地"加入"的?

这可能是一个愚蠢的问题,但我在谷歌上找不到任何东西.Netlogo文档说明了一些关于__includes可以解决这个问题的实验性关键词,但那里没有太多解释.也没有例子.

任何提示?我应该去__includes吗?它是如何工作的?

include netlogo

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

如何在 Haskell 中终止(SIGINT)子进程?

我正在用 Haskell 编写一个小程序,它可以操纵命令arecordmidiaplaymidi通过 MIDI 在我的数码钢琴上录制简短的即兴演奏。我将按下该R键,我的程序将使用命令创建一个新的子进程arecordmidi。当我再次按下时R,我希望通过终止命令来停止录音arecordmidi

如何终止子arecordmidi进程?如果在 shell 中,CTRL+C将停止录制。这就是我要的。

我使用以下代码来创建子流程:

import System.Process

main = do
  let rec_command = "arecordmidi -p \"CASIO USB-MIDI\" myRecording.midi"
  process <- createProcess (shell rec_command)

  -- I could try the following code, but the documentation of System.Process 
  -- says it's bad to use terminateProcess:
  let (_, _, _, processHandle) = process
  terminateProcess processHandle
Run Code Online (Sandbox Code Playgroud)

unix haskell process

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

从另一个shell提供命令行shell

这个问题可能听起来很奇怪,但我会解释上下文,希望它能证明这一点.我正在Linux上尝试使用一些制作不良的shell.

我必须使用fdbfcsh,这是Adobe的命令行调试器和Flash的编译器shell.这不是特别相关 - 只是它们是shell的事实,即你运行fdb,它给你一个提示(fdb),你输入命令.一切都很酷.

但.假设你想重新执行你的最后一个命令,所以你点击键盘上的[Arrow-Up],就像你在Bash,Python Shell,GDB shell等中所做的那样.它不起作用.我看到(fdb) ^[[A(注意这(fdb)是提示),而不是在提示符处看到最后一个命令.按[箭头左]键返回几个字符并修复您键入的命令 - 相同的故事.

这看起来像Adobe没有很好地制作它的外壳.有没有办法打开一个简单的bash shell(或其他东西),它会继续将我的命令提供给一个开放的fdbshell,作为一个守护进程保存?我希望通过这种方式我可以获得Bash用于处理命令的整洁可用性功能,但是让它们执行fdb.

注意:我发现这个包装器会保留fcsh守护程序并保存它的pid文件.这很酷.我还没有使用它,但考虑到它.不过,我的问题仍然存在:有没有办法将命令从一个shell传递到另一个shell?

bash shell usability pipe

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

如何从 Git Bash 中将命令行参数传递给 Windows 应用程序?

我正在尝试devenv从 Windows 上的 Git Bash 中运行。devenv接受诸如/build Debugor 之类的参数/projectconfig Debug。写作

devenv MySolution.sln /build Debug /project MyProj/MyProj.csproj
Run Code Online (Sandbox Code Playgroud)

失败,并devenv认为/build是当前文件夹中的一个文件。

另一方面,

devenv MySolution.sln --build=Debug --project=MyProj/MyProj.csproj
Run Code Online (Sandbox Code Playgroud)

也失败了。

如何从 Git Bash 中正确传递参数?

windows shell command-line git-bash

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