【问题标题】:Excel-VBA User form text entryExcel-VBA 用户表单文本输入
【发布时间】:2017-08-01 11:24:31
【问题描述】:

我正在尝试制作一个用户表单供用户输入文本,该文本将设置为工作表名称。因为工作表名称不能超过 30 个字符,所以我想添加一个警告。但是在宏中,它给了我一个错误。

我正在用这个场景检查它;

首先我要写一个长于 30 个字符的名称。 它给了我我写的错误。 (这很棒) 然后让我再次进入进入屏幕(这很棒) 然后我正在写正确的名字(短于 30 个字符。) 它给了我运行时错误'1004;应用程序定义或对象定义的错误。

代码是这样的;

Yeni_Sheet_Adi_Olustur.Show

If Yeni_Sheet_Adi_Olustur.Yeni_Sheet = "" Then
    MsgBox "Lütfen Sheet adi seçiniz"
    GoTo son

ElseIf Len(Yeni_Sheet_Adi_Olustur.Yeni_Sheet) > 30 Then
MsgBox "Sheet adi 30 karakterden kisa olmalidir"
Yeni_Sheet_Adi_Olustur.Show

Else
Yeni_Sheet = CStr(Yeni_Sheet_Adi_Olustur.Yeni_Sheet.Value)
End If

Yeni_Sheet_Adi_Olustur.Yeni_Sheet 使用 F8 控件给我“对象变量或未设置块变量”错误。 :(

我愿意接受任何建议。非常感谢。

【问题讨论】:

  • 你在哪里有这个代码?比如,它在触发器中吗?
  • 这没有被触发。当我运行整个宏时,它发生在一个事件之后。我想要实现的是从选定的工作簿中复制指定的工作表(工作正常),使用宏(我有问题)更改主工作簿中该工作表的工作表名称并在该工作表上运行一些其他宏(工作正常)。
  • 如果我首先写一个短于 30 个字符的名称,则代码效果很好。但是,如果我写一个 35 个字符的名称并在之后更改它,它会给我错误。
  • 'Yeni_Sheet' 是一个范围吗?如果是这样,请尝试使用 .Value 属性
  • 不,它是 userform1 的文本部分。 Userform1 命名为“Yeni_Sheet_Adi_Olustur”,文本区域命名为“Yeni_Sheet”

标签: vba excel reference


【解决方案1】:

我想通了,我错过了输入超过 30 个字符后会发生什么的部分,所以我添加了一个“GoTo”代码。现在它看起来像这样并且效果很好;

Son1:
Yeni_Sheet_Adi_Olustur.Show

If Yeni_Sheet_Adi_Olustur.Yeni_Sheet = "" Then
    MsgBox "Lütfen Sheet adi seçiniz"
    GoTo son

ElseIf Len(Yeni_Sheet_Adi_Olustur.Yeni_Sheet) > 30 Then
MsgBox "Sheet adi 30 karakterden kisa olmalidir"
Yeni_Sheet_Adi_Olustur.Hide
GoTo Son1

Else
Yeni_Sheet = CStr(Yeni_Sheet_Adi_Olustur.Yeni_Sheet.Value)
End If

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多