当前位置:首页>Excel>Excel VBA Application一切的起源

Excel VBA Application一切的起源

  • 2026-04-04 11:00:22
Excel VBA Application一切的起源

你写的 Cells,到底是谁的 Cells?

上一篇我们介绍了 Excel VBA 的对象,重点讲解了 Cells、工作表(Worksheet)和工作簿(Workbook)对象。

这个时候很多人在写代码时会有一些疑问:

  1. 为什么我没有指定具体的工作表或工作簿,Cells 也能直接访问?
  2. 甚至没有把它前面的对象写出来,也照样能直接取到它的值?

你可以看下面这个例子:

  • 1
Cells(23) = "已回访"

这句代码很多人都写过,而且它通常还真能正常运行。

也正因为它能跑,所以初学的时候,很多人不会太在意这件事。但我自己一直觉得,这里其实是一个很重要的点。因为你在前面刚开始学对象的时候,会觉得“对象要写清楚归属”;可到了这里,突然发现不写也行,那脑子里就会有点乱。

而且这个问题,不只是 Cells

像 RangeWorksheetsActiveSheetSelection 这些东西,平时写代码的时候也经常会直接冒出来。你没有把前面的对象写全,它们还是能用。

那这背后到底是谁在管?

其实答案就是 Application 对象

它可以理解成整个 Excel 程序本身。工作簿、工作表、单元格、选区、公式、窗口状态,很多你平时能接触到的东西,往上追,最后都能追到它这里。

所以这一篇,我就想把这个地方讲清楚一点。不是为了去背一个大对象,而是为了把很多“为什么我这样写也能跑”的问题,一次性弄明白。


一、你没有写出来的那个对象,很多时候就是 Application

先从最常见的 Cells 说起。

假设现在有这样一张客户跟进表:

A
B
C
D
1
客户名称
跟进人
最新进度
下次回访
2
星河科技
林涛
待回访
4月8日
3
北城商贸
许宁
已报价
4月9日
4
云帆物流
周岚
待合同
4月10日

很多人会顺手写下面这样的代码:

  • 1
  • 2
  • 3
Sub UpdateProgress()    Cells(23).Value = "已回访"'把 C2 改成“已回访”EndSub

这句代码能运行,不代表它没有上级对象。

它只是把上级对象省略掉了。

更完整一点,它其实更接近下面这种写法:

  • 1
  • 2
  • 3
Sub UpdateProgress()    Application.Cells(23).Value = "已回访"'当前活动工作表的 C2EndSub

这里最关键的一点,就是“当前活动工作表”。

也就是说,Cells(2, 3) 不是固定指某张表里的 C2,而是指你当前正在操作、当前激活的那张工作表里的 C2。

所以这也是为什么我前面一直会提醒,刚开始学的时候,这么写可以先理解思路;但真到了多张工作表、多本工作簿一起处理的时候,最好还是把对象写清楚。

比如:

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
Sub UpdateProgress()Dim wsFollow As WorksheetSet wsFollow = ThisWorkbook.Worksheets("客户跟进")   '明确指定代码要操作哪张表    wsFollow.Cells(23).Value = "已回访"'稳稳地写到“客户跟进”这张表的 C2EndSub

这样写的好处很直接:你不会因为自己手上切到了别的工作表,结果把数据写错地方。

这一点不只是 Cells


二、和 Cells 一样,下面这些也经常默认挂在 Application 身上

1)Range

  • 1
Set rng1 = Range("B2:D4")   '当前活动工作表里的 B2:D4

如果你没有写具体是哪张工作表,那它默认还是去当前活动工作表里找。

2)ActiveCell

  • 1
Application.ActiveCell.Interior.Color = vbYellow   '把当前选中的单元格填成黄色

这个比较直观,就是你现在鼠标选中的那个单元格。

3)Selection

这个和 ActiveCell 很像,但它代表的不一定只是一个单元格,也可能是一整块选区。

如果你拖选了一片区域,Selection 代表的就是那一块。

不过这里有个地方要注意:Selection 不一定永远是单元格区域。

因为 Excel 里可以选中的东西不只是单元格。你如果选中的是图片、图表、形状,那 Selection 返回的可能就是别的对象,不再是 Range 了。

所以这个对象虽然方便,但也别用得太想当然。


三、为什么 Worksheets 也可以直接写?

这个逻辑其实和 Cells 是一样的。

你平时可能会直接写:

  • 1
Worksheets(1).Range("B2")

它之所以能运行,是因为这里的 Worksheets,很多时候其实就是:

  • 1
Application.Worksheets(1)

它表示的是 当前活动工作簿 里的工作表集合。

这个地方顺手再把几个很容易混的对象捋一下:

  • Application.Worksheets:当前活动工作簿中的所有工作表
  • Application.ActiveSheet:当前活动的那张表
  • Application.ActiveWorkbook:当前最前面的那个工作簿
  • ThisWorkbook:保存这段 VBA 代码的那个工作簿

这里最容易混淆的,一般是 ActiveWorkbook 和 ThisWorkbook

比如你写了一个宏,运行过程中又新建了一本工作簿:

  • 1
Workbooks.Add

这时候,新建出来的这本工作簿就会立刻成为 ActiveWorkbook

但 ThisWorkbook 不会变。

ThisWorkbook 永远指的是“这段代码写在哪本工作簿里”,这个身份不会因为你中途又打开了别的文件就变掉。

所以我自己一般会这么理解:

  • ActiveWorkbook:现在谁在前台,谁就是它
  • ThisWorkbook:代码原来住在哪,谁就是它

这两个如果不分清,后面写批量处理工作簿的时候就很容易出错。

还有一个地方也顺带提一下。

ActiveSheet 虽然大多数时候是工作表,但它不一定总是 Worksheet 类型。因为 Excel 里还有图表工作表,如果当前激活的是那种表,ActiveSheet 返回的就可能不是普通工作表对象。

这个在日常办公里不算特别常见,但最好脑子里有这个印象。


四、Application 最实用的一件事:在 VBA 里直接调用 Excel 公式

讲到这里,Application 对象真正好用的地方就出来了。

因为它不只是帮你定位单元格、工作表这些对象,它还可以让你在 VBA 里直接调用 Excel 的很多内置公式。

靠的就是这个:

  • 1
Application.WorksheetFunction

它下面挂着很多你熟悉的公式方法,比如:

  • Sum
  • Average
  • Max
  • Min

这些都能直接在 VBA 里调用。

不过这里有一个特别高频的坑,几乎很多人都会踩一下。

比如有人会这么写:

  • 1
totalValue = Application.WorksheetFunction.Sum("C3:C7")

这样写是不对的。

因为 "C3:C7" 在 VBA 里只是一个字符串,不是一个单元格区域对象。

在工作表公式里,C3:C7 看起来就是区域;但在 VBA 里,如果你给它加了引号,它就只是一段文本。

正确写法应该这样:

  • 1
totalValue = Application.WorksheetFunction.Sum(Range("C3:C7"))

也就是说,你要先把这个区域写成 Range 对象,再把它传给 WorksheetFunction 去计算。

这个地方看起来只是多包了一层 Range,但本质上差别很大。


五、用一个更像实际办公的例子,把 WorksheetFunction 讲明白

假设你现在手上有几张区域客服表。

每张工作表的格式都一样,C 列记录的是“售后处理时长(分钟)”。现在你想批量算出每张表的平均值和标准差,分别放到 F2 和 F3。

其中一张表大概是这样的:

A
B
C
D
E
F
1
门店
业务类型
处理时长(分钟)
备注
统计项
结果
2
平均值
3
华东一区
售后
18
正常
标准差
4
华东二区
售后
23
正常
5
华南一区
售后
16
正常
6
华北一区
售后
29
正常
7
西南一区
售后
21
正常

这种需求,如果只有一张表,手工写公式当然也能做。

但如果有十几张、几十张,VBA 就明显更合适。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
Sub SummaryServiceTime()Dim wsRegion As WorksheetDim lastRow AsLongDim rngDuration As RangeForEach wsRegion In ThisWorkbook.Worksheets   '遍历当前工作簿中的每一张工作表        lastRow = wsRegion.Cells(wsRegion.Rows.Count, 3).End(xlUp).Row   '找到 C 列最后一行If lastRow >= 3Then'至少要有数据,才去计算SetrngDuration=wsRegion.Range(wsRegion.Cells(3,3),wsRegion.Cells(lastRow,3)) 'C3 到最后一行   wsRegion.Cells(2,6).Value=Application.WorksheetFunction.Average(rngDuration) '把平均值写到 F2   wsRegion.Cells(3,6).Value=Application.WorksheetFunction.StDev(rngDuration) '把标准差写到 F3EndIfNext wsRegionEndSub

这里我觉得最值得记住的,其实不是 Average 和 StDev 这两个名字,而是背后的思路:

在 VBA 里调用这些公式,本质上是先在代码里把结果算出来,再把结果写进单元格。

也就是说,程序跑完以后,F2 和 F3 里通常直接就是数值结果,而不是工作表里的那个公式文本。

这一点和你平时手工在单元格里输入 =AVERAGE(C3:C7),是两种不同的处理方式。


六、Application 下面还有一批特别常用的属性

真正写程序的时候,Application 还有一批很好用的属性。

我不建议死记,但下面这些最好还是要眼熟一点。

1)控制 Excel 外观

比如:

  • 1
Application.Caption = "客服日报处理工具"

这个是改 Excel 窗口标题栏文字的。

还有:

  • 1
  • 2
  • 3
Application.WindowState = xlMinimizedApplication.DisplayFullScreen = TrueApplication.Visible = False

它们分别对应:

  • 窗口最小化
  • 全屏显示
  • 让 Excel 隐藏起来

这些属性平时不一定天天写,但如果你后面做一些工具型模板、用户窗体,或者想控制界面展示效果,它们就会比较有用。

2)控制程序运行过程

这一组里,我觉得最常用的两个是:

  • 1
  • 2
Application.DisplayAlerts = FalseApplication.ScreenUpdating = False

DisplayAlerts 用来控制警告提示框。

比如你用代码删除工作表时,Excel 本来会弹一个“是否确认删除”的提示框。你把它设成 False,这些提示就可以先不弹。

ScreenUpdating 是控制屏幕刷新的。

这个在批量处理的时候特别实用。

很多人一开始写出来的宏,一运行就疯狂闪屏,一会儿跳这张表,一会儿跳那张表,看着眼花,而且速度还慢。这个时候,把屏幕刷新先关掉,程序通常会顺很多。

我自己写批量处理时,经常会先这么包一下:

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
Sub CleanReport()    Application.ScreenUpdating = False'先关屏幕刷新    Application.DisplayAlerts = False'先关提示框'这里写批量处理代码    Application.DisplayAlerts = True'结束前恢复    Application.ScreenUpdating = True'结束前恢复EndSub

这里有一个习惯,我觉得最好早点养成:

你把它关掉了,程序结束前最好记得再打开。

不然 Excel 可能会一直停在一个不太正常的状态里,后面你自己操作的时候也会别扭。

3)读取系统信息

还有几组属性,在做兼容处理的时候会比较有用:

  • 1
  • 2
  • 3
  • 4
Application.VersionApplication.OperatingSystemApplication.PathApplication.PathSeparator

前两个分别是 Excel 版本信息和当前操作系统信息。

后两个是 Excel 的安装路径,以及路径分隔符。

这个 PathSeparator 容易被忽略,但其实挺实用。因为不同系统里,路径分隔符不一定完全一样,所以如果你的代码要去拼文件路径,最好不要一上来就手写反斜杠。

更稳一点的写法像这样:

  • 1
filePath = "report" & Application.PathSeparator & "2026" & Application.PathSeparator & "data.xlsx"

这样路径拼接会更规范一些。


七、再说几个特别常见的方法

1)Quit

这个比较直接:

  • 1
Application.Quit

意思就是退出整个 Excel。

所以这句不能乱写,尤其是前面如果你还把 DisplayAlerts 关掉了,那没保存的内容可能就直接关掉了。

2)Intersect

这个方法我自己挺喜欢的。

它的作用是找出多个区域重叠的部分。

比如你有一块完整数据区,又有一块重点复核区,想看看它们重叠的是哪一块,就可以用它。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
Sub MarkOverlapArea()Dim rngData As RangeDim rngReview As RangeDim rngOverlap As RangeSetrngData=Range("B2:F10"'完整数据区Set rngReview = Range("D4:G12")        '重点复核区Set rngOverlap = Application.Intersect(rngData, rngReview)   '取重叠区域IfNot rngOverlap IsNothingThen        rngOverlap.Interior.Color = vbYellow   '把重叠区域标黄EndIfEndSub

这种场景你当然也可以自己算坐标,但如果区域本身是变量生成的,Intersect 会方便很多。

3)GetOpenFileName 和 GetSaveAsFileName

这两个方法特别适合做文件选择。

比如:

  • 1
  • 2
selectedFile = Application.GetOpenFileNamesaveFile = Application.GetSaveAsFileName

一个弹出“打开文件”对话框,一个弹出“另存为”对话框。

如果你写的是一个给别人使用的小工具,这两个方法就很顺手。因为让用户自己选文件路径,通常会比手动输入稳定得多。

4)Wait 和 OnTime

Wait 是让程序暂停到某个时间点再继续运行。

比如暂停 5 秒:

  • 1
Application.Wait Now + TimeValue("00:00:05")

OnTime 更像一个定时器。

你可以让 Excel 在指定时间自动运行某个宏。比如定时生成报表、定时检查数据、定时提醒,这类场景都能用到它。


八、学 Application,不是为了背对象表,而是为了改掉“想当然”

我自己觉得,Application 这一块最重要的,不是记住它下面到底挂了多少属性、多少方法。

更重要的是,要把一个意识建立起来:

你在 VBA 里经常顺手写下来的很多东西,其实都不是“凭空出现”的。它们背后都有上级对象。

比如:

  • Cells 背后是 Application.Cells
  • Range 背后是 Application.Range
  • Worksheets 背后是 Application.Worksheets

只是为了方便写代码,Excel 允许你把前面的 Application. 省略掉了。

省略前缀,确实能少打几个字。

但一旦你的代码开始处理多张表、多本工作簿、多种对象,你越清楚“这个东西到底属于谁”,代码就越稳。

所以这一篇如果最后只留一个结论,我会更愿意把它总结成这句话:

刚开始学的时候,可以先接受这些简写,先把程序跑起来。但真到了实际工作里,最好慢慢养成一个习惯——关键对象尽量写全,关键工作表尽量写明。

这样你后面在写批量处理、汇总报表、自动化工具的时候,会少踩很多坑。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-04 21:38:34 HTTP/2.0 GET : https://h.sjds.net/a/495378.html
  2. 运行时间 : 0.074644s [ 吞吐率:13.40req/s ] 内存消耗:4,421.38kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=7520b8eca50956b35961d0286bfc020e
  1. /yingpanguazai/ssd/ssd1/www/h.sjds.net/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/h.sjds.net/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/h.sjds.net/runtime/temp/ad153693ed39fba6d1bda2fe72512cde.php ( 12.06 KB )
  140. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000542s ] mysql:host=127.0.0.1;port=3306;dbname=h_sjds;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000887s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000791s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000283s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000444s ]
  6. SELECT * FROM `set` [ RunTime:0.000202s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000576s ]
  8. SELECT * FROM `article` WHERE `id` = 495378 LIMIT 1 [ RunTime:0.001059s ]
  9. UPDATE `article` SET `lasttime` = 1775309914 WHERE `id` = 495378 [ RunTime:0.001367s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.000219s ]
  11. SELECT * FROM `article` WHERE `id` < 495378 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000450s ]
  12. SELECT * FROM `article` WHERE `id` > 495378 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000534s ]
  13. SELECT * FROM `article` WHERE `id` < 495378 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000580s ]
  14. SELECT * FROM `article` WHERE `id` < 495378 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000585s ]
  15. SELECT * FROM `article` WHERE `id` < 495378 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000550s ]
0.076147s