我有一个子调用ActiveWorkbook.RefreshAll从XML源带来新数据,然后对它进行多次修改.问题是没有足够的时间让RefreshAll命令完成,因此下面的子和函数最终没有正确执行,这导致重复的行没有被正确擦除.
我尝试过使用Application.Wait和Sleep函数,但它们似乎也暂停了刷新过程.我只是希望其余代码等到刷新过程完成后再执行其余代码.
有关如何实现这一点的任何想法?现在我只能通过不调用RefreshAll来修复它,这让我想到实现后续执行的第二个流程,但这不是一个好的解决方法.
如果有任何不清楚的地方,请告诉我.谢谢
编辑 所以我从下面的帖子中尝试了一些建议,这就是我能想到的.执行"记录宏",然后在表属性中取消选中"启用后台刷新"不会产生任何结果.之后我也做了一次刷新.这是录制的宏的结果:
With ActiveWorkbook.Connections("XMLTable")
.Name = "XMLTable"
.Description = ""
End With
ActiveWorkbook.Connections("XMLTable").refresh
Run Code Online (Sandbox Code Playgroud)
ActiveWorkbook.Connections类没有BackgroundQuery选项,因此我可以将其设置为False.有任何想法吗?
只是为了清楚.这是一个托管在网站上的XML文件,Excel将其导入并导入到表中.然后我将这些数据称为数据透视和其他内容.这里的目标是允许从网站到表的导入过程在执行任何其他命令之前完成.谢谢
编辑2: 经过一番研究后,我找到了这个页面:http://www.mrexcel.com/forum/excel-questions/564959-execute-code-after-data-connection-refresh-finished.html 看来XML类型的连接没有BackgroundQuery布尔值.该选项仅适用于ODBC和OLEDB连接,分别是xlConnectionTypeODBC和xlConnectionTypeOLEDB类型.我使用的XML连接是xlConnectionTypeXMLMAP类型,它没有BackgroundQuery选项.有没有人知道从哪里去?我想到的,现在唯一的解决办法是让在Excel工作表中两个不同的宏按钮,一个清爽,一个用于数据修改,但我宁愿保留该选项的最后.
我想CountDownTimer
在a中显示一个简单的TextView
,但它似乎从30下降到28,就好像它们之间存在滞后.我不确定如何修复这个小bug.这是我的代码:
这是在点击监听器中Button
:
new CountDownTimer(30000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
coolDownTimer.setText("Cool Down for: " + String.valueOf(millisUntilFinished / 1000));
}
@Override
public void onFinish() {
animatedPic.setClickable(true);
// reregister the proximity sensor
sm.registerListener(sensorListener, proxSensor, SensorManager.SENSOR_DELAY_NORMAL);
coolDownTimer.setText("GO!");
}
}.start();
Run Code Online (Sandbox Code Playgroud) 我在工作表中有一张表,要对其进行迭代并更改使用已设置的功能的值。该函数仅调用多个Replace函数来更改字符串。
我的问题是如何仅对表中的值进行迭代?
我能够使用以下代码对列进行操作:
For Each cell In Sheets("RawData").ListObjects("RawTable").ListColumns("REQUESTNAME").DataBodyRange.Cells
cell.Value = decodeEnt(cell.Value)
Next
Run Code Online (Sandbox Code Playgroud)
但是,如何修改该代码以使其遍历行呢?我尝试使用ListRows和ListColumns的组合,但不知道麻烦到哪里去。这是我不确定之前去过的地方:
Dim listObj As ListObject
Set listObj = Sheets("RawData").ListObjects("RawTable")
For Each tableRow In listObj.ListRows
For Each tableCol In listObj.ListColumns
' Would using intersect work here?
' listObj.Cell.Value = decodeEnt(cell.Value)
Next
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏。
我想要一个要求用户输入字符的扫描仪,但是如果输入了多个字符,它应该再次提示用户只输入一个字符.
这是我到目前为止:
System.out.print("(Player 2) Guess a letter: ");
Scanner letterScan = new Scanner(System.in);
while(letterScan.nextLine().length()>1)
{
System.out.print("(Player 2) Please guess only one letter: ");
//char inputLetter = letterScan.next().charAt(0);
}
char inputLetter = letterScan.next().charAt(0);
System.out.println("letter: " + inputLetter);
Run Code Online (Sandbox Code Playgroud)
唯一的问题是,这是我运行时的输出:
(Player 2) Guess a letter: asfa
(Player 2) Please guess only one letter: a
s
letter: s
Run Code Online (Sandbox Code Playgroud)
你看到第三行?它要求另一个提示.我想摆脱它,并使其使用输出的第二行中的字母代替.有任何想法吗?
我是Python的新手.我第二次编码.此脚本的要点是获取包含数千行文件名(sNotUsed文件)的文本文件,并将其与大约50个XML文件进行匹配.XML文件每个最多可包含数千行,并且格式化为大多数XML.我不确定到目前为止代码的问题是什么.代码没有完全完成,因为我没有添加将输出写回XML文件的部分,但是当前的最后一行应至少打印一次.但事实并非如此.
两种文件格式的示例如下:
文本文件:
fileNameWithoutExtension1
fileNameWithoutExtension2
fileNameWithoutExtension3
etc.
Run Code Online (Sandbox Code Playgroud)
XML文件:
<blocks>
<more stuff="name">
<Tag2>
<Tag3 name="Tag3">
<!--COMMENT-->
<fileType>../../dir/fileNameWithoutExtension1</fileType>
<fileType>../../dir/fileNameWithoutExtension4</fileType>
</blocks>
Run Code Online (Sandbox Code Playgroud)
我的代码很远:
import os
import re
sNotUsed=list()
sFile = open("C:\Users\xxx\Desktop\sNotUsed.txt", "r") # open snotused txt file
for lines in sFile:
sNotUsed.append(lines)
#sNotUsed = sFile.readlines() # read all lines and assign to list
sFile.close() # close file
xmlFiles=list() # list of xmlFiles in directory
usedS=list() # list of S files that do not match against sFile txt
search = "\w/([\w\-]+)"
# getting the list …
Run Code Online (Sandbox Code Playgroud) 我有类似于此结构的代码:
def my_gen(some_str):
if some_str == "":
raise StopIteration("Input was empty")
else:
parsed_list = parse_my_string(some_str)
for p in parsed_list:
x, y = p.split()
yield x, y
for x, y in my_gen()
# do stuff
# I want to capture the error message from StopIteration if it was raised manually
Run Code Online (Sandbox Code Playgroud)
是否可以通过使用 for 循环来做到这一点?我在其他地方找不到类似的案例。如果无法使用 for 循环,还有哪些其他替代方案?
谢谢