Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在使用debug.print时,是否有办法使即时窗口显示实际选项卡而不是4个空格_Excel_Vba_Ms Access - Fatal编程技术网

Excel 在使用debug.print时,是否有办法使即时窗口显示实际选项卡而不是4个空格

Excel 在使用debug.print时,是否有办法使即时窗口显示实际选项卡而不是4个空格,excel,vba,ms-access,Excel,Vba,Ms Access,使用debug时,是否有办法强制VBA将实际的chr(9)或vbTab字符打印到即时窗口中。打印而不是4个空格或您定义的任何字符 假设我想从MS Access中的一个表中复制一些记录,并将它们连接成一个由vbTabchar分隔的字符串,然后将该字符串打印到MS Access中的即时窗口中并复制该字符串 我将字符串粘贴到Excel中,并尝试使用由制表符分隔的文本导入向导,是否有效?绝对不是!Excel不会识别制表符,而是识别4个空格 我需要使用SetText将其复制到剪贴板,或者将其导出到文件,然

使用
debug时,是否有办法强制VBA将实际的
chr(9)
vbTab
字符打印到即时窗口中。打印
而不是4个空格或您定义的任何字符

假设我想从MS Access中的一个表中复制一些记录,并将它们连接成一个由
vbTab
char分隔的字符串,然后将该字符串打印到MS Access中的即时窗口中并复制该字符串

我将字符串粘贴到Excel中,并尝试使用由制表符分隔的文本导入向导,是否有效?绝对不是!Excel不会识别制表符,而是识别4个空格

我需要使用
SetText
将其复制到剪贴板,或者将其导出到文件,然后在Excel中打开

我无意粗鲁,但请避免回答“为什么不使用|作为字段分隔符”。我可以成功地复制文本,问题是是否有一种方法可以直接从即时窗口用实际制表符复制文本。

我不是说/想讨论其他选择,只要有可能 在即时窗口中显示实际的制表符


答案是否定的。

直接窗口对
chr(9)
vbTab
的表示是4个空格。您可以通过打印
chr(9)
vbTab
来验证这一点,单击即时窗口并按Backspace,然后键入一些空格并按Backspace


据我所知,这是无法改变的。

@Nacorid和@Warcupine:Jose R的实际问题是合法的。在我的例子中(以Word为例),我需要转储一些应用程序对象属性的当前值,这样我就可以将它们复制/粘贴到Excel中,形成一个多列表。最理想的做法是这样做:

With Application
    Debug.Print "UserName" & vbTab & .UserName
    Debug.Print "UserInitials" & vbTab & .UserInitials
    Debug.Print "DefaultSaveFormat" & vbTab & .DefaultSaveFormat
    Debug.Print "RecentFiles.Maximum" & vbTab & .RecentFiles.Maximum
End With
    
然后将这些结果直接复制/粘贴到Excel电子表格中

但是,不,我必须使用两步流程:

With Application
    Debug.Print "UserName" & "~" & .UserName
    Debug.Print "UserInitials" & "~" & .UserInitials
    Debug.Print "DefaultSaveFormat" & "~" & .DefaultSaveFormat
    Debug.Print "RecentFiles.Maximum" & "~" & .RecentFiles.Maximum
End With
然后将结果复制/粘贴到Word中,将“~”替换为“^t”,然后将这些结果复制/粘贴到Excel电子表格中。当然,这种技术是可行的,但是VBE设计者主动阻止程序员做他们需要做的事情是违反直觉的(而且令人恼火):将实际的制表符打印到即时窗口。一个更好的设计是让Tab(n)在需要时按原样运行,但也允许vbTab或Chr(9)打印制表符


还有一个关于评论风格的建议:提供你认为提出问题的人试图做的事情的替代方法是很好的,但对他们试图解决的问题或他们为什么提出他们提出的问题做出判断是非常令人不快的。我给人的印象是傲慢和无知,因为你不可能对更大的背景和环境有太多的洞察,而这些背景和环境促使人们提出他们的特定问题。

更重要的问题:为什么要打印到即时窗口并从那里复制字符串?@nacroid它既快又懒。我想,这比保存文件然后在excel中打开要快,或者比创建MSFORMS对象只是为了将字符串复制到剪贴板的开销要快。你可以直接从access导出到excel,这会让你省去麻烦。我向你保证,我没有冒犯你,你只是在以最糟糕的方式进行。你所要求的每件事都很容易以一种简单得多的方式实现。祝你好运。我还没有就这个问题投票。。。但是现在你提到了。