- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 Visual Basic,我对 Print 语句的行为感到困惑,因为有时以下语句:会在行尾导致额外的回车符“^M”,但有时却不会。我想知道为什么?
filePath = "d:\tmp\FAE-IMM-Report-2012-Week.org"
If Dir(filePath) <> "" Then
Kill filePath
End If
outFile = FreeFile()
Open filePath For Output As outFile
Print #outFile, "#+TITLE: Weekly Report"
会产生
#+TITLE: Weekly Report^M
虽然我希望没有^M:
#+TITLE: Weekly Report
在一个测试程序中,几乎相同的代码不会产生“^M”。
经过进一步的实验,我发现以下建议使用 vbNewline 和“;”打印内容最后,仍然没有解决我的问题。
经过仔细隔离,我发现问题的原因是一个看起来像空格的字符,不完全是空格,后面跟着换行符和回车符。在打印包含有问题字符串的文本之前,没有回车符,但是一旦打印有问题的行,那么包括前一行在内的每一行都会有回车符。
我不确定有问题的字符串到底是什么,因为我的 VBA 技能还不太好。
以下是电子表格单元格中的违规文本的副本:
"There is something invisible after this visible text
After the invisible text, then there might be a carriage return $Chr(13) and/or newline"
不过,我不确定粘贴到网络浏览器是否会保留内容。通过粘贴到 emacs,我没有看到回车符,而 emacs 应该显示它,如果有的话。所以我猜想有问题的字符串中没有回车符。
下面是演示问题的程序:
Sub DemoCarriageReturnWillAppear()
Dim filePath As String
Dim outFile
Dim offendingText
filePath = "d:\tmp\demoCarriageReturn.org"
If Dir(filePath) <> "" Then
Kill filePath
End If
outFile = FreeFile()
Open filePath For Output As outFile
Print #outFile, "#+AUTHOR: Yu Shen" & vbNewLine;
Close #outFile 'At this moment, there is no carriage return
Open filePath For Append As outFile
offendingText = ThisWorkbook.Worksheets("Sheet1").Range("A1")
Print #outFile, offendingText & vbNewLine;
Close #outFile 'Now, every line end has carriage return.
'It must be caused by something offending at the above print out content.
End Sub
以下是上述过程的最终结果:
#+AUTHOR: Yu Shen^M
There is something invisible after this visible text
After the invisible text, then there might be a carriage return $Chr(13) or newline^M
注意上面的“^M”是我添加的,因为回车在浏览器中是不可见的。
如果您有兴趣,我可以向您发送包含违规内容的 Excel 文件。
我需要您的帮助来了解如何避免那些有问题的字符串或回车符。(我什至尝试对回车符或新行进行字符串替换,因为我发现一旦我手动删除了导致另一行更改的任何内容,问题就会消失。但是调用 Replace 来替换 vbNewline, Chr$(13),或 vbCrLf 没有任何区别。
感谢您的进一步帮助!
于
最佳答案
使用尾部分号来取消新行:
Print #outFile, "#+TITLE: Weekly Report";
^
^
如果您在语句中犯了错误,VB 编辑器通常会添加一个分号,这可以解释为什么有时输出新行,有时不输出。
新的诊断程序
我们需要知道单元格 A1 中导致问题的字符。
将以下子例程放入您的模块之一中。
Public Sub DsplInHex(Stg As String)
Dim Pos As Long
For Pos = 1 To Len(Stg)
Debug.Print Hex(AscW(Mid(Stg, Pos, 1))) & " ";
Next
Debug.Print
End Sub
转到 VB 编辑器的立即窗口并输入以下文本,然后按 Return
:
DsplInHex(Sheets("Sheet1").range("A1"))
在此行下方,您应该会看到类似于 54 65 73 74 31
的内容。这是单元格中每个字符的代码值的列表。我希望我们会在列表末尾看到 A
(换行代码)或 D
(回车代码)。
将光标定位在单元格 A1 中。单击F2
选择编辑,然后单击Backspace
删除不可见的尾随字符,然后单击Return
结束编辑。返回立即窗口,将光标定位到 DsplInHex(Sheets("Sheet1").range("A1"))
的末尾,然后单击 Return
。尾随字符应该已经消失。
尝试一下并报告回来。祝你好运。
关于vba - 使用 Visual Basic 避免在 Print 语句中出现额外的 "carriage return"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9444887/
我们已经有一个使用 AnyEvent 的库。它在内部使用 AnyEvent,并最终返回一个值(同步 - 不使用回调)。有什么方法可以将这个库与 Mojolicious 一起使用吗? 它的作用如下: #
我想从 XSD 文件生成带有 JAXB 的 Java 类。 问题是,我总是得到一些像这样的类(删除了命名空间): public static class Action { @X
我有一个关于 html 输入标签或 primefaces p:input 的问题。为什么光标总是自动跳转到输入字段。我的页面高度很高,因此您需要向下滚动。输入字段位于页面末尾,光标自动跳转(加载)到页
我今天在考虑面向对象设计,我想知道是否应该避免 if 语句。我的想法是,在任何需要 if 语句的情况下,您都可以简单地创建两个实现相同方法的对象。这两个方法实现只是原始 if 语句的两个可能的分支。
String graphNameUsed = graphName.getName(); if (graphType.equals("All") || graphType.equals(
我有一张友谊 table CREATE TABLE IF NOT EXISTS `friendList` ( `id` int(10) NOT NULL, `id_friend` int(10
上下文 Debian 64。Core 2 二人组。 摆弄循环。我使用了同一循环的不同变体,但我希望尽可能避免条件分支。 但是,即使我认为它也很难被击败。 我考虑过 SSE 或位移位,但它仍然需要跳转(
我最近在 Java 中创建了一个方法来获取字符串的排列,但是当字符串太长时它会抛出这个错误:java.lang.OutOfMemoryError: Java heap space我确信该方法是有效的,
我正在使用 (C++) 库,其中需要使用流初始化对象。库提供的示例代码使用此代码: // Declare the input stream HfstInputStream *in = NULL; tr
我有一个 SQL 查询,我在 WHERE 子句中使用子查询。然后我需要再次使用相同的子查询将其与不同的列进行比较。 我假设没有办法在子查询之外访问“emp_education_list li”? 我猜
我了解到在 GUI 线程上不允许进行网络操作。对我来说还可以。但是为什么在 Dialog 按钮点击回调上使用这段代码仍然会产生 NetworkOnMainThreadException ? new T
有没有办法避免在函数重定向中使用 if 和硬编码字符串,想法是接收一个字符串并调用适当的函数,可能使用模板/元编程.. #include #include void account() {
我正在尝试避免客户端出现 TIME_WAIT。我连接然后设置 O_NONBLOCK 和 SO_REUSEADDR。我调用 read 直到它返回 0。当 read 返回 0 时,errno 也为 0。我
我正在开发 C++ Qt 应用程序。为了在应用程序或其连接的设备出现故障时帮助用户,程序导出所有内部设置并将它们存储在一个普通文件(目前为 csv)中。然后将此文件发送到公司(例如通过邮件)。 为避免
我有一组具有公共(public)父类(super class)的 POJO。这些存储在 superclass 类型的二维数组中。现在,我想从数组中获取一个对象并使用子类 的方法。这意味着我必须将它们转
在我的代码中,当 List 为 null 时,我通常使用这种方法来避免 for 语句中的 NullPointerException: if (myList != null && myList.size
我正在尝试避免客户端出现 TIME_WAIT。我连接然后设置 O_NONBLOCK 和 SO_REUSEADDR。我调用 read 直到它返回 0。当 read 返回 0 时,errno 也为 0。我
在不支持异常的语言和/或库中,许多/几乎所有函数都会返回一个值,指示其操作成功或失败 - 最著名的例子可能是 UN*X 系统调用,例如 open( ) 或 chdir(),或一些 libc 函数。 无
我尝试按值提取行。 col1 df$col1[col1 == "A"] [1] "A" NA 当然我只想要“A”。如何避免 R 选择 NA 值?顺便说一句,我认为这种行为非常危险,因为很多人都会陷入
我想将两个向量合并到一个数据集中,并将其与函数 mutate 集成为 5 个新列到现有数据集中。这是我的示例代码: vector1% rowwise()%>% mutate(vector2|>
我是一名优秀的程序员,十分优秀!