小编Har*_*don的帖子

Let/Get Properties中的可选参数如何工作?

我在Excel 2007中使用vba,并且正在为类模块编写代码.

1)以下代码是否可能?...
基本上我有两个枚举,称之为eDATASETeDATATSUBSET.特定值eDATASET应触发Let属性中可选传递参数的赋值.像这样的东西:

Public Property Let foo(Optional ByVal lngSubSet as eDATASUBSET, _  
                        ByVal lngSuperSet as eDATASET)
    Select Case lngSuperSet
        Case eDATASET.abc, eDATASET.def
            mlngBar = lngSuperSet
        Case eDATASET.xyz
            '// if lngSubSet not passed, trigger error code...
            mlngBar = lngSubSet
    End Select
End Property
Run Code Online (Sandbox Code Playgroud)

2)如何在调用对象时将可选参数传递给可写属性...
除了看似向后放置的Optional参数(与函数和子函数中的可选参数相比),我无法找到任何关于此的文档特征.vba帮助说:

可选的.表示不需要参数.如果使用,arglist中的所有后续参数也必须是可选的,并使用Optional关键字声明.请注意,Property Let表达式的右侧不可能是Optional.

以及来自vbusers.com的以下内容.没有在使用方式上解释太多.那么在从代码模块调用对象时如何传递可选参数...oObj.foo = ???

3)有更好的方法吗?...
我对oop有一个基本的了解(至少在vba中是如何实现的).有条件地将参数接受到对象中是否有更好的方法?

vba properties optional-parameters

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

以编程方式确定命名范围是否作用于工作簿

我正在尝试我认为是一个相当简单的vba语句来测试命名区域是否作用于工作簿或特定工作表.


作为测试,我创建了一个新的Excel文档,并添加了6个命名范围.以下是它们在名称管理器中的布局:

 Name         |   Refers To          |   Scope
 -------------+----------------------+-----------
 rng_Local01  |   =Sheet1!$A$2:$A$16 |   Sheet1
 rng_Local02  |   =Sheet1!$C$2:$C$16 |   Sheet1
 rng_Local03  |   =Sheet1!$E$2:$E$16 |   Sheet1
 rng_Global01 |   =Sheet1!$B$2:$B$16 |   Workbook
 rng_Global02 |   =Sheet1!$D$2:$D$16 |   Workbook
 rng_Global03 |   =Sheet1!$F$2:$F$16 |   Workbook
Run Code Online (Sandbox Code Playgroud)

我希望运行:

For i = 1 To ThisWorkbook.Names.Count
    If ThisWorkbook.Names(i).WorkbookParameter Then Debug.Print ThisWorkbook.Names(i).Name
Next i
Run Code Online (Sandbox Code Playgroud)

会导致Workbook记录三个范围的命名范围,但是没有任何反应.没有错误.该.Names(i).WorkbookParameter到求值False所有指定的范围,我不知道为什么.


通过查看NameVBA帮助中的对象我ValidWorkbookParameter看起来像ReadOnly的堂兄WorkbookParameter,但是使用该方法没有任何区别.

我也试过明确设置ThisWorkbook.Names(i).WorkbookParameter = True,但这会导致错误:

"无效的过程调用或参数"

尽管 …

vba excel-2007

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

时间轴数据的类似gnuplot的程序

我正在寻找一个类似gnuplot的程序来绘制时间轴中的数据.

gnuplot-like ==

  • 在Linux上运行
  • 命令行功能(GUI不会对我有多大帮助)
  • 脚本语法
  • 输出到jpg,png,svg或gif

输出应该是这样的:

    |         |         |         |         |
set5|######################       |         |
    |         |         |         |         |
set4|      ######     #######     | ########|
    |         |         |         |         | 
set3|############       |#############      |##
    |         |         |         |         |
set2|         #########################     |
    |         |         |         |         |
set1|   #########       |###      |##########
    |         |         |         |         |
----+----+----+----+----+----+----+----+----+--
  00:00     00:30     01:00     01:30     02:00
Run Code Online (Sandbox Code Playgroud)

我的最终目标是使用来自计划的基于gawk的脚本中的一些数据自动创建时间线图像.我已经用gnuplot探索了一些方法来做到这一点.Boxxyerrorbar图看起来很有希望,或者可能是带有一些透明部分的堆积条形图,甚至是热图类型图也可以.

但在我进一步深入通过一个gnuplot形状的孔来强迫我的要求之前,我想知道是否有其他人知道任何其他有用的东西.

linux charts graph gnuplot

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

有没有办法为VBA中的一组类设置一组通用属性?

我正在研究中的一个项目,其中有许多类用于查询来自各种来源的数据.由于这些类是相似的,我试图确定是否使用公共接口并使用该Implements语句对我来说是一个可行的选项.我对OOP一般都是新手(尽管我试图用非VBA语言学习),而且我知道VBA中的OOP还有很多不足之处.

我一直在阅读的信息基本上表明你设置了我们将要调用的接口类IBaseInfo:

Public Property Let LocationData(ByRef locDATA As udtLocData)
End Property

Public Property Let ReferenceDate(ByVal dteDATE As Date)
End Property
Run Code Online (Sandbox Code Playgroud)

然后你实际IBaseInfo在你的课程中实现,我们将调用clsRate5pt:

Implements IBaseInfo

Private Property Let IBaseInfo_LocationData(Byref RHS As udtLocData)

End Property

Private Property Let IBaseInfo_ReferenceDate(ByVal RHS As Date)

End Property
Run Code Online (Sandbox Code Playgroud)

我感到困惑的是我如何从模块中的对象级别实际访问属性.我从msdn上的VBA多态性的引用得到的是我需要实际声明一个类型的变量IBaseInfo,将它设置为类型的对象clsRate5pt并通过该变量访问属性.如:

Sub TestIFace()

    Dim o5PT As clsRate5Pt
    Dim oInfo As IBaseInfo

    Set o5PT = New clsRate5Pt
    Set oInfo = o5PT

    oInfo.LocationData = '// …
Run Code Online (Sandbox Code Playgroud)

polymorphism vba interface

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

需要协助编译基本java程序的错误

我是Java的新手.我在编译基本的java程序时遇到了问题,我正在努力理解为什么.(注意TextIO代码中的类用于我正在研究的书中以简化IO过程,我不相信这就是问题所在)这是我的代码:

public class ProcessSales {
    public static void main(String[] args) {

        String      ln;
        String      tmp;
        int         i;
        int         noval;

        TextIO.readFile("sales.dat");

        while (TextIO.eof() == false){
            ln = TextIO.getln();
            for (i = 0; i < ln.length(); i++) {
                if (ln.charAt(i) == ':'){
                    tmp = ln.subString(i + 1);  
                }   
            } // end line for loop

            try {
                System.out.printf("%8.2f\n", Double(tmp.trim()));
            }
            catch (NumberFormatException e) {
                noval++;
            }
        } // end of file while loop

        System.out.printf("\nThere were a total of %d cities that …
Run Code Online (Sandbox Code Playgroud)

java

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

手卷SOAP请求

我正在尝试构建一个手动滚动的HTTP请求,以便从我认为是一个相当简单的SOAP Web服务调用返回响应.但是,我无法正确构建请求,并且没有得到我期望的响应.


适用wsdl声明:

wsdl目标命名空间:

targetNamespace="http://tempuri.org/"
Run Code Online (Sandbox Code Playgroud)

wsdl服务

<wsdl:service name="TrackerService">
  <wsdl:port name="BasicHttpBinding_ITrackerService" binding="tns:BasicHttpBinding_ITrackerService">
    <soap:address location="http://mydomain.com/TrackerServiceSite/wctest2.TrackerService.svc"/>
  </wsdl:port>
</wsdl:service>
Run Code Online (Sandbox Code Playgroud)

wsdl消息

<wsdl:message name="ITrackerService_GetStub_InputMessage">
  <wsdl:part name="parameters" element="tns:GetStub" /> 
</wsdl:message>
<wsdl:message name="ITrackerService_GetStub_OutputMessage">
  <wsdl:part name="parameters" element="tns:GetStubResponse" /> 
</wsdl:message>
Run Code Online (Sandbox Code Playgroud)

wsdl绑定和SOAP操作

<wsdl:binding name="BasicHttpBinding_ITrackerService" type="tns:ITrackerService">
  <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
        .
        . <!—- Omitted for brevity --> 
        .
  <wsdl:operation name="GetStub">
    <soap:operation soapAction="http://tempuri.org/ITrackerService/GetStub" style="document"/>
    <wsdl:input>
        <soap:body use="literal"/>
    </wsdl:input>
    <wsdl:output>
        <soap:body use="literal"/>
    </wsdl:output>
  </wsdl:operation>
</wsdl:binding>
Run Code Online (Sandbox Code Playgroud)

预期退货响应

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Header />
  <s:Body>
      <GetStubResponse xmlns="http://tempuri.org/">
        <GetStubResult xmlns:a=http://schemas.datacontract.org/2004/07/wctest2 xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
          <a:Password>SOMEPASS</a:Password>
          <a:Username>SOMEUSER</a:Username>
        </GetStubResult>
      </GetStubResponse>
  </s:Body>
</s:Envelope>
Run Code Online (Sandbox Code Playgroud)

到目前为止的HTTP请求:

POST …
Run Code Online (Sandbox Code Playgroud)

soap wsdl http-headers

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