我正在运行Excel 2016(64位)并获得“编译错误:找不到方法或数据成员”,这会突出显示文本框名称。
我无法理解为什么我收到此错误。 我复制了我在另一个项目(32位)中创建的代码,因为它在32位环境中完美运行。
我已经查看了由于32位Vs 64位平台冲突而遇到的问题。但我找不到编译错误的原因,因为我目前还没有其他地方的代码。
有人会告诉我出现问题的地点和原因,我在Userform中有以下代码名为 Frm_AFI
Option Explicit Dim wb As ThisWorkbook Dim wsLog As cnServiceLog ' cnServiceLog is the codename for my "Service Log" worksheet
Private Sub UserForm_Initialize()
TXT_Date_Created.Value = Format(Date, "dd/mm/yyyy")
Dim irow As Long
Dim wsLog As cnServiceLog
Set wsLog = cnServiceLog
Dim lastRow As String
'find last data row from cnServiceLog
irow = wsLog.Cells(Rows.Count, 1).End(xlUp).Row
wsLog.TXTWorkOrderNo.Text = "SWC" & Year(Date) & Format(Month(Date), "00") & "-" & Format(Split(wsLog.Cells(irow, 1).Value, "-")(1) + 1, "00000")
End Sub
Sub getsettings()
On Error Resume Next
wb = ThisWorkbook.Worksheets(cnServiceLog).Name
If Not Err.Number = 0 Then
MsgBox "expected to find a Service Log worksheet, but it is missing"
Exit Sub
End If
On Error GoTo 0
ThisWorkbook.Worksheets(cnServiceLog).Select
x = Range("A2").Value
End Sub
只需注释:此Userform必须与32位和64位Excel平台兼容。
提前感谢你,
TheShyButterfly
答案 0 :(得分:0)
您的cnServiceLog
工作表看起来像是在使用ActiveX控件。根据{{3}},如果你想坚持使用ActiveX控件,你将不得不提供32位版本的工作簿,以及使用64位版本的64位版本的工作簿。控制。
假设您仅使用ActiveX控件而不使用事件,您可以切换到非ActiveX文本框控件,并使单个工作簿在32位和64位主机中安全地工作
TXTWorkOrderNo
然后删除此行的VBA
wsLog.TXTWorkOrderNo.Text = "SWC" & Year(Date) & Format(Month(Date), "00") & "-" & Format(Split(wsLog.Cells(irow, 1).Value, "-")(1) + 1, "00000")
并替换为这些行
Dim shp As TextBox`
Set shp = wsLog.Shapes("TXTWorkOrderNo").OLEFormat.Object
shp.Text = "SWC" & Year(Date) & Format(Month(Date), "00") & "-" & Format(Split(wsLog.Cells(irow, 1).Value, "-")(1) + 1, "00000")