gpt4 book ai didi

excel - 如何为单元格分配变量值以避免 VBA 运行时错误 5?

转载 作者:行者123 更新时间:2023-12-04 21:20:00 25 4
gpt4 key购买 nike

我想将一些用户输入(通过表单生成)的值分配给特定的单元格。也就是说,如果我的 rowLocation 变量 = 4,我希望单元格 C4(我称之为 statusRng)具有 CaseStatusBox.Text 的值。

当我运行我目前拥有的东西时,我得到运行时错误 5:下面代码中注释掉的行上的“无效的过程调用或参数”。有什么想法我哪里出错了吗?谢谢!

rowLocation = Application.WorksheetFunction.Match(client, rng, 0)

statusRng = ("C" & rowLocation)
StaffRng = ("D" & rowLocation)
DateRng = ("G" & rowLocation)


OutputSheet.Cells("statusRng") = CaseStatusBox.Text 'debugger points to error on this line
OutputSheet.Cells("StaffRng") = StaffEntryBox.Text
OutputSheet.Cells("DateRng") = Date

最佳答案

Worksheet.Cells返回 Range对象,不带任何参数; ("statusRng")你传递的参数,最终会传递给 Range.[_Default]属性,它需要 2 个可选参数。给定参数,Range.[_Default]将它们传递给 Range.Item(RowIndex, ColumnIndex) ,它接受整数/Long值,而不是字符串。

@Comintern suggested ,将参数传递给 Worksheet.Range相反,会按预期工作 - Worksheet.Range接受 [cell1], [cell2] Variant 的参数,并提供几种方便的方法来检索 RangeWorksheet object - 其中之一是提供命名范围的名称。

因此,如果存在指定的名称,这些应该可以正常工作:

OutputSheet.Range("statusRng").Value = CaseStatusBox.Text
OutputSheet.Range("StaffRng").Value = StaffEntryBox.Text
OutputSheet.Range("DateRng").Value = Date

如果名称不存在,预计会出现运行时错误 1004。

看起来您的意思是传递包含工作表地址的字符串变量,而不是命名范围。在这种情况下,删除 "双引号,因为这些分隔 VBA 中的字符串文字; "statusRng"正在传递字符串,而您的 statusRng变量没有被读取。
Dim statusRng As String
statusRng = "C" & rowLocation

Dim StaffRng As String
StaffRng = "D" & rowLocation

Dim DateRng As String
DateRng = "G" & rowLocation

OutputSheet.Range(statusRng).Value = CaseStatusBox.Text
OutputSheet.Range(StaffRng).Value = StaffEntryBox.Text
OutputSheet.Range(DateRng).Value = Date

关于excel - 如何为单元格分配变量值以避免 VBA 运行时错误 5?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54373083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com