小编Voo*_*Voo的帖子

Excel VBA无法打开工作簿

第一:我使用的是Excel 2007,但代码也必须适用于Excel 2003.

我的问题如下:我需要访问可能已关闭的不同工作簿中的单元格.可以在网络上找到以下代码:

Function Foo()
    Dim cell As Range
    Dim wbk As Workbook
    Set wbk = Workbooks.Open("correct absolute path")
    ' wbk is Nothing here so the next statement fails.
    Set cell = wbk.Worksheets("Sheet1").Range("A1")
    Foo = cell.Value
    wbk.Close
End Function
Run Code Online (Sandbox Code Playgroud)

遗憾的是,wbk在公开声明之后是没有的(我很乐意提供更好的错误信息,但不知道我是怎么做的;我为真正的IDE和有用的语言提供了什么:/).绝对路径是正确的,并指向有效的excel xlsx文件.

另外我假设最好的方法是"缓存"工作簿,而不是每次调用函数时都打开/关闭它?任何可能的问题(除了必须处理工作簿已经打开的情况)?

单步执行时的图像: 调试信息

excel vba

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

为什么要区分表达式和语句

在函数式语言(实际上我用过的所有函数式语言)中,语句和表达式之间没有区别,每个代码块的最后一个值是块的"返回值".另一方面,通常不被认为是纯粹功能的语言通常会引入这种区别.

作为我正在谈论的一个例子,以下python代码打印None:

def foo():
    5 + 5
print(foo())
Run Code Online (Sandbox Code Playgroud)

而方案代码打印 10

(define (foo) (+ 5 5))
(display (foo))
Run Code Online (Sandbox Code Playgroud)

显然,我对那些喜欢一种风格的人的主观答案不感兴趣,而是客观原因.

对我而言,这种区别似乎使得语言的语法和实现更加复杂(一个不那么明显的例子就是模板和void类型的c ++标准中的必要例外,或者引入了"快捷方式if语句",比如?c - 受影响的语言)没有真正的好处 - 但很可能有一个原因,即使是新的现代语言仍然有这种区别.

language-agnostic procedural-programming functional-programming

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

typedefed签名类型的最大值

我正在阅读John Regehr的博客,了解他如何给学生们一个关于饱和算术的任务.有趣的是,代码必须按原样编译,同时使用typedef指定不同的整数类型,请参阅以下完整标题的摘录:

typedef signed int mysint;
//typedef signed long int mysint;

mysint sat_signed_add (mysint, mysint);

mysint sat_signed_sub (mysint, mysint);
Run Code Online (Sandbox Code Playgroud)

相应的无符号版本很容易实现(虽然我实际上不确定填充位是否也不会产生问题),但我实际上看不出如何获得未知签名的最大值(或最小值)在C型,而无需使用宏MAX_UND MIN_或导致未定义的行为.

我在这里遗漏了什么,或者作业是否有缺陷(或者更可能是我错过了他给学生们的一些重要信息)?

c math

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

作为参数传递给模块函数时,Scriptblock 未获得管道变量绑定

我想把这个功能

function Test-Any {
    [CmdletBinding()]
    param($EvaluateCondition,
        [Parameter(ValueFromPipeline = $true)] $ObjectToTest)
    begin {
        $any = $false
    }
    process {
        if (-not $any -and (& $EvaluateCondition $ObjectToTest)) {
            $any = $true
        }
    }
    end {
        $any
    }
}
Run Code Online (Sandbox Code Playgroud)

到一个模块中。我刚刚创建了一个新模块 my-scripts.psm1 文件,其中仅包含上述函数并使用Import-Module <absolute path>.

问题是,如果我使用模块中的函数1..4 | Test-Any { $_ -gt 3 }会返回 false,因为$_未设置为来自管道的值。

如果我在脚本中正常定义该函数并从那里使用它,它会按预期工作(为 $_ 分配整数值)。

Windows 7 下的 PowerShell v4.0 会发生这种情况。

powershell module powershell-module powershell-4.0

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

Mac OS X的系统范围快捷方式

因此我被要求将一些内部帮助应用程序移植到Mac OS X 10.7.

因为平台相关代码无论如何都很小,但是一个应用程序需要一个系统范围的快捷方式来运行(即RegisterHotkey功能)而且我找不到任何关于如何在Mac上执行此操作的文档.

该程序使用PyQt gui和Python 3.2.而windows的相应代码基本上是:

def register_hotkey(self):
    hwnd = int(self.winId())
    modifiers, key = self._get_hotkey()
    user32.RegisterHotKey(hwnd, self._MESSAGE_ID, modifiers, key)
Run Code Online (Sandbox Code Playgroud)

然后接收热键事件:

def winEvent(self, msg):
    if msg.message == w32.WM_HOTKEY:
        self.handle_hotkey()
        return True, id(msg)
    return False, id(msg)
Run Code Online (Sandbox Code Playgroud)

请注意,我不需要python变体,我可以轻松编写一个简单的c扩展 - 所以C/objective-c解决方案也是受欢迎的.

python macos qt pyqt objective-c

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

NetStandard 2.0的参考.net461程序集

根据Microsoft(“来自.NET Standard的.NET Framework库参考”),我们可以引用来自.NetStandard 2.0项目的完整框架库<= .NET 4.6.1,以帮助迁移从Visual Studio 15.3开始的现有代码。

那么,为什么以下方法不起作用?

NetStandard / NetStandard.csproj:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <ProjectReference Include="..\FullFramework\FullFramework.csproj" />
  </ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

FullFramework / FullFramework.csproj

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net461</TargetFramework>
  </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

给我以下错误:

  error NU1201: Project FullFramework is not compatible with netstandard2.0 (.NETStandard,Version=v2.0). Project FullFramework supports: net461 (.NETFramework,Version=v4.6.1)
  error : Project '..\FullFramework\FullFramework.csproj' targets 'net461'. It cannot be referenced by a project that targets '.NETStandard,Version=v2.0'.
Run Code Online (Sandbox Code Playgroud)

.net c# visual-studio .net-standard

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

使用type()进行方法调用

为什么PEP-343在这种情况下使用type()?

    mgr = (EXPR)
    exit = type(mgr).__exit__  # Not calling it yet
    value = type(mgr).__enter__(mgr)
Run Code Online (Sandbox Code Playgroud)

难道我们不能使用exit = mgr.__exit__value = mgr.__enter__()?对我来说似乎更简单,但我认为我错过了一些东西.

python

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

中心浮动div水平

我想要一个水平居中的"浮动"div,即即使用户滚动也始终位于屏幕顶部的div.

使用以下CSS,我将div完全放在左侧:

#guiBar {
margin-left: auto;
margin-right: auto;
position: fixed;
}
Run Code Online (Sandbox Code Playgroud)

margin: 0 auto也没有帮助(大概是因为这不起作用position: fixed

我真的不在乎解决方案如何工作,所以javascript或一些html5技巧将与纯css一样好.我已经尝试过从starx找到的解决方案,但这似乎也不适用于position:fixed.还有这个也不起作用(即它是左中心 - 不确定是否有一些<input class="guiButton" type="image" src="/icons/some.png" />固定大小的定义.)

html javascript css html5

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

应用程序在JVM终止之前可以生成多少个线程

问:

1)在多线程应用程序中,应用程序可能产生的线程数有限制.

2)如果存在这样的限制,JVM是否终止应用程序并使用什么错误代码.

编辑

3)如果应用程序产生了非常快速的成功,JVM是否会将其检测为"粗略"应用程序

提前致谢

java multithreading

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

std :: for_each使用g ++编译错误,而不是VS2012

我有以下代码(尽可能简化):

#include <vector>
#include <algorithm>

using std::vector;

enum class Foo {
    BAR, BAZ
};

void print_to_file(const vector<const vector<Foo> >& sequences) {
    std::for_each(sequences.begin(), sequences.end(), [](const vector<Foo>& sequence) {
    });
}

int main(int argc, char **argv) {
    return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

在编译时,g++ (SUSE Linux) 4.7.1 20120723 [gcc-4_7-branch revision 189773]因为g++ --std=c++11 test.cpp我收到以下错误消息:

In file included from /usr/include/c++/4.7/x86_64-suse-linux/bits/c++allocator.h:34:0,
                 from /usr/include/c++/4.7/bits/allocator.h:48,
                 from /usr/include/c++/4.7/vector:62,
                 from test.cpp:1:
/usr/include/c++/4.7/ext/new_allocator.h: In instantiation of ‘struct __gnu_cxx::new_allocator<const std::vector<Foo> >’:
/usr/include/c++/4.7/bits/allocator.h:89:11:   required from ‘class std::allocator<const std::vector<Foo> >’
/usr/include/c++/4.7/bits/alloc_traits.h:89:43:   required …
Run Code Online (Sandbox Code Playgroud)

c++ g++ visual-c++ c++11

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

VS2015中的计时文字

以下代码给出了编译时错误:

#include <chrono>

int main() {
    auto day = 24h;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

错误C3688:无效的文字后缀'h'; 文字运算符或文字运算符模板'operator'"h'未找到.

我在Visual Studio 2015 Update 1上尝试这个,根据这个应该工作,所以发生了什么?

c++ visual-studio user-defined-literals visual-studio-2015

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