我有一个Excel工作簿,几乎所有内容都是自动化的.它打开其他工作簿,从中复制数据,关闭它们,然后多次循环数据以生成我们打印和使用的报告.几乎每次运行所有VBA然后尝试打印之后,打印预览都会卡住,无论是找到打印机还是加载页面大小,如图所示.关闭Excel并重新打开文档可将打印预览恢复为正常功能.VBA唯一与打印相关的是改变打印区域.我没有遇到任何其他运行VBA的文档的问题.这只是一个错误或代码中的某些内容吗?
这是导致打印预览无法以某种方式加载的代码.如果我跳过这一部分然后按预期工作...我希望以某种方式使用此代码功能,因为它仍然需要.
Set wb1 = Workbooks.Open(FileName)
Set wb2 = ThisWorkbook
For i = LBound(sArray) To UBound(sArray) 'Loops through array, copies available data from last report
ShtName = sArray(i, 0)
On Error Resume Next
wb1.Sheets(ShtName).Activate
If Err.Number = 0 Then
wb1.Sheets(ShtName).Activate
Columns("A:U").Copy
wb2.Sheets(ShtName).Activate
Columns("BE:BV").Select
Selection.PasteSpecial xlPasteValues
Application.CutCopyMode = False
lastrow = Cells(Rows.Count, "BE").End(xlUp).Row
Range("BA2:BC2").Select
Selection.AutoFill Destination:=Range(Cells(2, "BA"), Cells(lastrow, "BC")), Type:=xlFillDefault
End If
On Error GoTo 0
DoEvents
Next i
wb1.Close False
Sheet2.Activate
Run Code Online (Sandbox Code Playgroud)
我已经尝试评论"On Error Resume Next","On Error Goto 0","If ...","End If"和"DoEvents".打印预览仍然无法删除,只是从上一页进行复制和粘贴.
我有一个文本字段,我需要从中提取某些数字.该数字始终为7位数字,但字符串中的位置未知,字符串中的位数也未知.
样品串是"SF WO 1564892 DUE 5/19 FIN WO 1638964 DUE 5/27".我希望能够提取1564892和1638964,并生成一个新的字符串,如"1564892; 1638964",如果字符串中有更多,则继续添加"; number".我使用新字符串来查找并返回这些数字中最大的一个.
我找到了这个并且它有点工作,但它也会从字符串"123456789"返回"1234567",这是不受欢迎的.
Public Function ExtractDigits(Alphanumeric As String, DigitLength As Long)
Dim StringLenght As Long
Dim CurrentCharacter As String
Dim NewString As String
Dim NumberCounter As Long
Dim TempString As String
StringLenght = Len(Alphanumeric)
For r = 1 To StringLenght
CurrentCharacter = Mid(Alphanumeric, r, 1)
If IsNumeric(CurrentCharacter) Then
NumberCounter = NumberCounter + 1
TempString = TempString & CurrentCharacter
If NumberCounter = DigitLength Then
If NewString = "" Then
NewString …Run Code Online (Sandbox Code Playgroud) 我一直在尝试构建一个正则表达式来从字符串中提取 7 位数字,但很难获得正确的模式。
示例字符串 -WO1519641 WO1528113TB WO1530212 TB
返回示例 -1519641, 1528113, 1530212
我在 Excel 中使用的代码是...
Private Sub Extract7Digits()
Dim regEx As New RegExp
Dim strPattern As String
Dim strInput As String
Dim strReplace As String
Dim Myrange As Range
Set Myrange = ActiveSheet.Range("A1:A300")
For Each c In Myrange
strPattern = "\D(\d{7})\D"
'strPattern = "(?:\D)(\d{7})(?:\D)"
'strPattern = "(\d{7}(\D\d{7}\D))"
strInput = c.Value
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
If regEx.test(strInput) …Run Code Online (Sandbox Code Playgroud) 我有代码用于将工作簿保存在具有特定名称的特定文件夹中。当文件已经存在时就会出现问题。我将“ConflictResolution”设置为询问用户,但当用户在对话框中 选择No或时,我收到“运行时错误 1004:对象 _Workbook 的方法 SaveAs 失败” 。Cancel
我不确定如何或是否可以退出No,Cancel或者我是否应该将自定义错误处理添加到此部分?
NewFileType = "Excel Macro-Enabled Workbook (*.xlsm), *.xlsm," & _
"All files (*.*), *.*"
NewFile = Application.GetSaveAsFilename( _
InitialFileName:=SaveArea & newfilename, _
fileFilter:=NewFileType)
If NewFile <> "" And NewFile <> "False" Then
ActiveWorkbook.SaveAs FileName:=NewFile, _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, _
CreateBackup:=False, _
ConflictResolution:=xlUserResolution
End If
Run Code Online (Sandbox Code Playgroud)