我创建了一个宏,在一段时间不活动后关闭WB.如果我手动打开文件,它工作得很完美,但如果我使用另一个WB中的另一个宏打开文件,它将不会在设置的不活动时间后自动关闭.我用来自动关闭它的代码是:
此工作簿模块:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
stop_Countdown
ThisWorkbook.Save
End Sub
Private Sub Workbook_Open()
start_Countdown
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
stop_Countdown
start_Countdown
End Sub
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
stop_Countdown
start_Countdown
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _
ByVal Target As Excel.Range)
stop_Countdown
start_Countdown
End Sub
Run Code Online (Sandbox Code Playgroud)
常规模块:
Option Explicit
Public Close_Time As Date
Sub start_Countdown()
Close_Time = Now() + TimeValue("00:00:10")
Application.OnTime Close_Time, "close_WB"
End Sub
Sub stop_Countdown()
Application.OnTime Close_Time, "close_WB", …
Run Code Online (Sandbox Code Playgroud) 我已经编写了这个函数来从字符串的开头和结尾删除空格,任何想法为什么它不起作用?
Public Function PrepareString(TextLine As String)
Do While Left(TextLine, 1) = " " ' Delete any excess spaces
TextLine = Right(TextLine, Len(TextLine) - 1)
Loop
Do While Right(TextLine, 1) = " " ' Delete any excess spaces
TextLine = Left(TextLine, Len(TextLine) - 1)
Loop
PrepareString = TextLine
End Function
Run Code Online (Sandbox Code Playgroud) 我正在尝试在Excel中使用Continue For语句,它会抛出编译错误:"预期表达式".这是代码:
For i = 3 To num
If Cells(i, 19) = "" Then
continue for
End If
Next i
Run Code Online (Sandbox Code Playgroud)
为什么会这样?PS:这是实际代码的简化版本.
我希望一个范围内的每个单元格的值乘以一个特定的值(比方说4/7).我有这个代码,但我收到了"类型不匹配错误".
Range("B1:B4").Value = Range("B1:B4").Value * 4 / 7
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
我正在寻找一种方法,如果字符串中的第二个字符是数字,则返回零值。
例如,N227G6
- 我想查找 2 作为第二个字符并返回值 0。
我尝试过:IF(ISNUMBER(LEFT(A1,2)),0,A1)
,但没有运气。
谢谢。
我在工作表的列中有一个字符串列表(让我们说"A"),如下所示:
A
BJS-LAX-GRU
CAN-ORD-MIA-BOG
NRT-LAX-JFK-LIM
Run Code Online (Sandbox Code Playgroud)
然后我在另一张表上有一个不同的列表(让我们说"B"),如下所示:
A
LAX
MEX
MIA
JFK
Run Code Online (Sandbox Code Playgroud)
所以我想知道第一个列表的每个字符串中第一个列表的哪个值首先出现,然后我需要在字符串旁边写入该值.在这个例子中,我会得到:
A B
BJS-LAX-GRU LAX
CAN-ORD-MIA-BOG MIA
NRT-LAX-JFK-LIM LAX
Run Code Online (Sandbox Code Playgroud)
我编写了以下代码,它完美地运行:
Dim aux As Integer
Dim cur As String
For j = 1 To Sheets("A").Cells(Rows.Count, "A").End(xlUp).Row
aux = 100
cur = ""
For k = 1 To Sheets("B").Cells(Rows.Count, "A").End(xlUp).Row
If InStr(Sheets("A").Cells(j, 1).Value, Sheets("B").Cells(k, 1).Value) < aux And InStr(Sheets("A").Cells(j, 1).Value, Sheets("B").Cells(k, 1).Value) <> 0 Then
cur = Sheets("B").Cells(k, 1).Value
aux = InStr(Sheets("A").Cells(j, 1).Value, cur)
End If
Next k
Sheets("A").Cells(j, 2) = …
Run Code Online (Sandbox Code Playgroud) 我的单元格中有一个日期值(假设A1
),我想使用 VBA 检查该日期的时间是否大于或小于特定时间(假设 13 小时)。我怎样才能做到这一点?我试过:
if Cells(1,1)<TimeValue("13:00:00") then
'Something
end if
Run Code Online (Sandbox Code Playgroud)
但这没有用。
另外,如果我想获得时差,例如我想知道 13:00:00 和 13:10:00(即 10 分钟)之间的差异,我该怎么做?