我在Excel 2007中使用vba,并且正在为类模块编写代码.
1)以下代码是否可能?...
基本上我有两个枚举,称之为eDATASET和eDATATSUBSET.特定值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语句来测试命名区域是否作用于工作簿或特定工作表.
作为测试,我创建了一个新的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,但这会导致错误:
"无效的过程调用或参数"
尽管 …
我正在寻找一个类似gnuplot的程序来绘制时间轴中的数据.
gnuplot-like ==
输出应该是这样的:
| | | | |
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形状的孔来强迫我的要求之前,我想知道是否有其他人知道任何其他有用的东西.
我正在研究excel-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) 我是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) 我正在尝试构建一个手动滚动的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)
POST …Run Code Online (Sandbox Code Playgroud) vba ×3
charts ×1
excel-2007 ×1
gnuplot ×1
graph ×1
http-headers ×1
interface ×1
java ×1
linux ×1
polymorphism ×1
properties ×1
soap ×1
wsdl ×1