“let”类陷入无限循环

2024-02-03

请原谅代码中的任何愚蠢错误,因为这是我第一次尝试使用类,而且我在网上找不到任何真正将其放入其中的教程,really对于像我这样的傻瓜来说,简单的术语。我尽力遵循 MS 指南:https://msdn.microsoft.com/en-us/library/aa716315(v=vs.60).aspx https://msdn.microsoft.com/en-us/library/aa716315(v=vs.60).aspx,但我真的不明白我在做什么,这使得很难解释我应该改变什么。

我正在尝试创建一个存储三个数据、两个整数和一个字符串的类。我把它放在一个名为的类模块中tdata:

Sub tdata()

Dim tnumber As Integer, tacct As Integer
Dim ttype As String

Public Property Get t_acct() As Integer         'don't forget the account number!
    t_acct = tacct
End Property

Public Property Let t_acct(ByVal newval As Integer)
    t_acct = newval
End Property

Public Property Get t_numb() As Integer         'T1, T2, or T3 as applicable
    t_numb = tnumb
End Property

Public Property Let t_numb(ByVal newval As Integer)
    t_numb = newval
End Property

Public Property Get t_type() As String          'PF or MW
    t_type = ttype
End Property

Public Property Let t_type(ByVal newstr As String)
    t_type = newstr
End Property

End Sub

然后我在我的函数中调用它

Set t_info = New tdata
t_info.t_acct = wb2.Sheets(1).Cells(d, 1)             'd is just a row counter in a for loop
t_info.t_numb = Right(wb2.Sheets(1).Cells(d, 4), 1)
t_info.t_type = wb2.Sheets(1).Cells(d, 6)
references(CStr(wb2.Sheets(1).Cells(d, 5))).Add t_info

(当然,这不是全部代码,而只是调用它的部分)

我有Option Explicit所有这些有趣的东西都在,一切都编译得很好,但是当它到达函数片段的第二行时,它会尝试 maket_info.t_acct等于某物,它会走向Let为该功能发挥作用,并永远留在那里。具体来说,它在

Public Property Let t_acct(ByVal newval As Integer)
    t_acct = newval

永远。为什么是这样?我如何让它设置(错误,让)t_acct等于我想要的东西?


你的问题在这里:

Public Property Let t_acct(ByVal newval As Integer)
    t_acct = newval
End Property

那应该分配封装字段(tacct),而不是它本身。


我将向您提供我的秘诀:每当我创建新的类模块时,我都会从私有类型开始:

Option Explicit
Private Type TData 'assuming class module is named 'Data'
    Number As Integer
    Account As Integer
    AccountType As String
End Type

然后,我声明一个该类型的私有字段,名为this:

Private this As TData

有些人可能会争辩说this让一切变得如此混乱,因为this(私人领域)不是Me(对象实例)和其他语言this指的是对象实例和诸如此类的东西 - 如果它让您感到困惑,请给它任何您喜欢的名称(backing and encapsulated也完全没问题!)。

现在所有属性都变得清晰且一致:

Public Property Get Number() As Integer
    Number = this.Number
End Property

Public Property Let Number(ByVal value As Integer)
    this.Number = value
End Property

Public Property Get Account() As Integer
    Account = this.Account
End Property

Public Property Let Account(ByVal value As Integer)
    this.Account = value
End Property

Public Property Get AccountType() As String
    AccountType = this.AccountType
End Property

Public Property Let AccountType(ByVal value As String)
    this.AccountType = value
End Property

Property Get会员回归this.ThePropertyName, and Property Let会员assign this.ThePropertyName与提供的value- 总是。如果属性需要是非 get-only 的对象类型,您需要提供一个Property Set member:

Private Type TData
    '...
    SomeObject As Object
End Type
Private this As TData    

Public Property Get SomeObject() As Object
    Set SomeObject = this.SomeObject
End Property

Public Property Set SomeObject(ByVal value As Object)
    Set this.SomeObject = value
End Property

避免拆元音、前缀和不可读/无意义的名称,使用PascalCase对于公共成员,注重一致性,无论你做什么,都避免在公共类成员的名字中使用下划线 - 否则你想开始使用的那一天Implements是你的代码停止编译的那一天。遵循这一点,你的课程模块应该总是一目了然。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“let”类陷入无限循环 的相关文章

  • 使用输入作为显示日期的基础

    我需要一种方法来使用用户窗体上的输入来确定将在输出上显示的日期 这是我的代码 If StatusBox Value lt 23 59 And ShiftCode Value AP Then Cells emptyRow 8 Value Da
  • 使用 FindElementbyXpath() 获取 Selenium Basic 中可填充框的行和列名称

    我正在使用 Selenium Basic 将电子表格中的文本填充到网站中 网站的html代码是这样的 div table cellspacing 0 border 1 style width 99 tr th style font weig
  • Android Excel CSV 的 MIME 数据类型是什么?

    我尝试了 text csv 甚至 application vnd ms excel 但 Excel 不会显示在选择列表中 很多其他应用程序也可以 void shareCsv Uri uri Context context Intent in
  • 有没有更快的方法来使用Powershell解析Excel文档?

    我正在与一个接口MS Excel文件通过Powershell 每个 Excel 文档可能有大约 1000 行数据 目前这个脚本似乎读取了Excel文件并以每 0 6 秒 1 条记录的速率将值写入屏幕 乍一看 这似乎非常慢 这是我第一次阅读E
  • 如何在 Excel 中对“高”字符进行 HTML 编码或音译?

    在 Excel 中 如何将包含重音字符 大引号等的单元格内容转换为相同字符的 HTML 或音译纯文本版本 我们有一个 XLS 文档 其中包含一些 高 字符 数据已通过数据库连接提取 并且 Excel 似乎正确处理不同代码页中的各个单元格 或
  • 使用 split 函数到数组中会导致编译错误:无法分配给数组

    我正在尝试使用split 函数根据给定名称字符串中的空格拆分名称 当尝试编译我在下面编写的代码时 出现编译错误 无法分配给数组 我几乎从这里复制了微软的示例 https support microsoft com en us kb 2662
  • 如何使用vba复制Excel工作表中的动态范围

    我试图使宏中的范围是动态的 而不指定最后一行x Sheets SheetName Range A2 K1000 Copy在 1000 行中 我想将其更改为动态 因为有时我的数量会更少或更多 尝试这个 Sub Test Dim lRow as
  • 如何将 .xlsx 文件上传到 jenkins 作业

    如何将 xlsx 文件作为构建参数上传到 jenkins 作业 我尝试使用文件参数 但我发现该文件正在丢失其扩展名或原始格式 有什么方法可以从 jenkins UI 将 excel 文件上传到 jenkins 作业吗 In the file
  • 将 MS 转换为秒

    我发现这个公式可以用来将 MS 转换为秒 但它是为 Excel 2002 编写的 而我正在使用 2010 CONCATENATE TEXT INT B1 1000 86400 hh mm ss B1 INT B1 1000 1000 以下是
  • 使用 XMLHTTP 进行抓取会在特定类名处引发错误

    我正在尝试使用此代码抓取网站以提取姓名和联系人 Sub Test Dim htmlDoc As Object Dim htmlDoc2 As Object Dim elem As Variant Dim tag As Variant Dim
  • 读取上传的Excel文件而不保存它

    在这段代码中 我从用户那里获取上传的文件并将其保存在我的应用程序中的文件夹中 然后对此 Excel 文件进行 OleDbConnection 并读取数据 我的问题是 有人可以建议一种阅读此 Excel 文件的首选方法 但无需预先保存它 因为
  • 将 HTML 转换为 Excel 的最佳方法是什么

    我有一个 HTML 页面 其中包含 Flash 图表 FusionCharts 和 HTML 表格 我需要将这整个事情转换成Excel HTML 表格应显示在 Excel 工作表的单元格中 Flash 图表可以显示为图像 我们可以使用任何开
  • 在工作表中合并行和求和值

    我有一个 Excel 工作表 其中包含以下数据 管道 来分隔列 A B C X 50 60 D E F X 40 30 A B C X 10 20 A B C Y 20 20 A B C X 20 70 D E F X 10 50 A B
  • 使用 PhpSpreadsheet PHP 设置单元格边框样式

    我使用 PhpSpreadsheet 来读取或写入 Excel 文件 我想向我的 Excel 添加边框样式 所以我使用了以下代码
  • Excel 接受一些字符,而 OpenXml 有错误

    我有一个字符串 我想使用 C 中的 openxml 组件将其导出到 Excel 文件 我的文本有 u001f 字符 而 openxml 对此字符有错误 错误文本 十六进制值 0x1f 是无效字符 我将该测试直接复制到 Excel 中 没有问
  • Excel 2007 从 C# get_Value 始终返回 -2146826265

    我有一个引用 Microsoft Excel 12 0 对象库的小型 C 应用程序 除此之外 它还从 Excel 单元格读取值 它从一些较旧的 Excel xls 文件和一些 2007 文件 xlsx 中读取此值 所有 xls 文件的值都会
  • 索引行和列意外结果

    我试图理解以下行为 如果我有以下数据 A B a 1 b 2 c 3 如果我使用 INDEX A 1 B 3 它将正确显示整个范围 如果我使用 INDEX A 1 B 3 1 它将正确显示两列第一行的数据 如果我使用 INDEX A 1 B
  • 如何在缩进层次结构中找到父级?

    我目前有一张 Excel 工作表 其中包含缩进的项目层次结构 如下所示 每个项目都缩进 每个缩进四个空格 以显示它如何适应整体层次结构 我已经能够创建一个 级别 列 将缩进级别转换为数字 Item Level Parent P1 1 N A
  • 在 Python 中从 Excel 复制 YEARFRAC() 函数

    因此 我使用 python 来自动执行一些必须在 Excel 中执行的重复任务 我需要做的计算之一需要使用yearfrac 这在Python中被复制了吗 I found this https lists oasis open org arc
  • 从Excel单元格中提取固定长度的数字

    一些类似名称的线程 但仍然无法解决我的问题 我需要从 Excel 字符串中提取固定长度的 NUMBER 值 在我的场景中为 8 位数字 为此目的提供了以下 Excel 公式 MID A1 FIND SUBSTITUTE SUBSTITUTE

随机推荐

  • 反序列化 JSON 时出错无法将 JSON 对象反序列化为“System.String”类型

    我有以下 JSON workspace name Dallas dataStores http 8080 geoserver rest workspaces Dallas datastores json coverageStores htt
  • 尝试在 Windows PC 上禁用处理器空闲状态(C 状态)

    我需要防止处理器进入空闲状态 非C0 C状态 诚然 我对处理器 C 和 P 状态了解不多 所以请耐心等待 我们使用来自第三方供应商的相机 该相机偶尔会提供损坏的帧 供应商已确定 当 CPU 进入空闲状态时 它会干扰通过火线传输帧 为了确认这
  • Python 和服务器负载

    有没有办法使用Python定期检查Linux机器的服务器负载并以某种方式通知我 Python 有一个函数可以获取系统的平均负载 作为 os 模块的一部分 gt gt gt import os gt gt gt os getloadavg 1
  • 如何为 ElevatedButton 上的背景颜色设置动画?

    当我的 ElevatedButton 将其状态更改为禁用时 我想在两种背景颜色之间创建淡入淡出 我该怎么做 final buttonStyle ElevatedButton styleFrom backgroundColor Colors
  • C++ 从进程获取用户名

    我有一个进程句柄 HANDLE hProcess OpenProcess PROCESS QUERY INFORMATION PROCESS VM READ 0 THE PROCESS ID 如何获取正在运行该进程的用户的用户名 我正在使用
  • ASP.NET Core Url.Action 返回空字符串

    在 stackoverflow 上浏览了 3 小时后 我没有找到问题的解决方案 所以我怀疑我的项目中有一些特别的东西 我在 Visual Studios 2017 上有一个 ASP NET Core 2 0 WebApplications
  • 获取初始实体框架迁移脚本

    我刚刚安装了 Entity Framework Migrations 向类添加了一个属性 并尝试了 EF Migrations 我的开发数据库得到了及时更新 到目前为止 一切都很好 现在 我想为此创建一个更改脚本initial使用生产数据库
  • 更改 Google 工作表上特定单元格的背景颜色

    我正在处理这个绑定到 Google Sheets 电子表格的脚本 我在其中从时间驱动的触发器运行这个函数 我希望能够定位工作表上的特定单元格 如果单元格值 打开 以便我可以更改单元格的背景颜色 我想知道我该如何去做这项工作 我能够定位单元格
  • 在 Meteor.js 中查找当前会话 ID

    如何找到客户端当前的Session Id 我能够获得看起来像是最后一个会话 ID 而不是当前会话 ID console log Meteor default connection lastSessionId 这个措辞有点令人困惑 但是 la
  • 无法在 p:media 中显示从 Primefaces 中的流内容生成的 PDF

    我正在尝试显示在新浏览器窗口中打开的内联 PDF 我有以下场景 在由ajax调用的一些ActionListen中 我生成PDF内容 将数据放入会话中 并发送要执行的Javascript window open打开新页面以显示 PDF 在打开
  • 如果日期带有前导零,则 getDay() 返回错误的日期[重复]

    这个问题在这里已经有答案了 我在使用 javascript 时遇到了这个问题 我从数据库中获取 yyyy mm dd 日期 但是当我想使用 getDay 获取星期几时 如果这一天带有前导零 我会得到错误的数字 我写了一个可能的解决方案来将
  • 在 LinkedIn 上分享 描述字段未显示在新用户界面中

    用户在新用户界面上通过 LinkedIn API 上的共享发布的帖子最多会显示在其帐户上 用户消息 评论 图像 标题和链接域 但是 有关在 LinkedIn API 上共享的文档 https developer linkedin com d
  • 搜索视图未显示在工具栏中

    我实际上在支持 AppCompat v7 lib 24 0 0 上的 Searchview 有问题 SearchView 不显示任何文本和输入文本 看屏幕截图 搜索查询工作完美 这是我的菜单 menu menu
  • 无法以 null 启动服务 [服务名称]

    我最近编写了一个 Android Widget 并在模拟器和我的 Galaxy S 上进行了测试 它在两者上都运行良好 在我将其发布到 Android 市场后 现在我收到了一些错误报告 我在 Widget 类的 onUpdate 中声明一个
  • Azure 函数无法启动 - “未响应端口 X 上的 HTTP ping”(Docker/VNet)

    我真的很难弄清楚如何设置使用 Docker 容器映像并连接到 VNet 的 Azure Function 我在任何地方都找不到此设置的任何示例 我遇到的主要问题是 在我的容器启动并运行后 它似乎没有响应底层框架用于确定该功能是否启动并运行的
  • codechef 和 spoj 问题中使用的 modulo 10^9+7 有何意义?

    我正在研究一个问题 http www codechef com SEPT14 problems CHEFLR它需要输出为 对于每行输出答案模 10 9 7 为什么是模 10 9 7包含在问题中吗 其意义何在 我不是在寻找问题的解决方案 仅该
  • 进度条与文件解压

    我正在尝试更新progress bar将文件解压缩到 SD 卡中 我的解压工作正常 但是progress bar没有出现 这是我在 mainactivity 中的代码 private ProgressBar bar Override pub
  • ORM 解决方案(JPA;Hibernate)与 JDBC

    我需要能够以每 5 秒至少 8000 个对象的一致速率在内存 HSQL 数据库中插入 更新对象 我在 Spring Hibernate JPA 和纯 JDBC 之间做了一些性能对比测试 我发现使用 HSQL 的性能有显着差异 使用 Spri
  • Silverlight:FrameworkElement.FindName() 在浏览器窗口中不“可见”时找不到控件

    我遇到一个问题 我使用 FrameworkElement 对象的 FindName 方法来搜索该元素的子控件 我注意到了一些有趣的行为 但似乎无法弄清楚 如果用户滚动浏览器窗口 使得控件本身在窗口框架的上下文中不再明显显示 则 FindNa
  • “let”类陷入无限循环

    请原谅代码中的任何愚蠢错误 因为这是我第一次尝试使用类 而且我在网上找不到任何真正将其放入其中的教程 really对于像我这样的傻瓜来说 简单的术语 我尽力遵循 MS 指南 https msdn microsoft com en us li