데이터 입력 용도로 사용되는 사용자 정의 폼을 여는 Form Control이있는 스프레드 시트 작업을하고 있습니다. 양식의 제출 단추는 셀 행을 채우고 행의 마지막 두 셀에 두 개의 단추를 추가합니다. 사용자가 수행하는 행 수와 각 새 단추가 고유 한 이름으로 작성 될 때마다 행이 삽입됩니다. 그러나 이들은 ActiveX 컨트롤이며 동료가 파일을 열고 랩톱에서 사용하려고하면 다른 Windows/Office 버전과의 호환성 문제가 발생합니다. 프로그래밍 방식으로 양식 컨트롤을 추가 할 수 있습니까?
이
내가 (그것은 단지 다른 변수 본질적으로 다른 버튼에 대해 동일) 스프레드 시트에 명령 단추 중 하나를 추가 사용하고 코드입니다 :Dim i As Long, Hght As Long
Dim Name As String, NName As String
i = 0
Hght = 305.25
NName = "cmdAction" & i
For Each OLEObject In ActiveSheet.OLEObjects
If Left(OLEObject.Name, 9) = "cmdAction" Then
Name = Right(OLEObject.Name, Len(OLEObject.Name) - 9)
If Name >= i Then
i = Name + 1
End If
NName = "cmdAction" & i
Hght = Hght + 27
End If
Next
Dim UpdateEntry As OLEObject, N%
Set UpdateEntry = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
, DisplayAsIcon:=False, Left:=Selection.Offset(0, 23).Left, Top:=Selection.Offset(0, 23).Top, Width:=72, Height _
:=24)
UpdateEntry.Name = NName
UpdateEntry.Object.Caption = "Edit Entry"
With ThisWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
N = .CountOfLines
.InsertLines N + 1, "Private Sub " & NName & "_Click()"
.InsertLines N + 2, vbTab & "Code for button goes here"
.InsertLines N + 3, vbTab & "End Sub"
End With
나는 그것이 궁금했다 동일한 작업을 수행 할 수 있었지만 만든 단추는 ActiveX 대신 폼 컨트롤입니까?
표시되는 오류는 런타임 오류 32809 : 응용 프로그램 정의 또는 개체 정의 오류입니다. 광범위한 연구 끝에 Windows의 다른 버전이 변경되면 시트가 손상되어 발생하는 것으로 나타났습니다. 이 문제를 해결할 수있는 유일한 방법은 새 시트를 만들어 모든 시트 내용을 새 시트에 복사하고 손상된 시트를 삭제 한 다음 새 시트의 이름을 이전 이름으로 변경하는 것입니다. 이 작동하지만 ActiveX 컨트롤을 복사 할 수 없습니다. 사용자 정의 폼을 여는 데 사용되는 스프레드 시트의 양식 컨트롤이 올바르게 작동하기 때문에 이름이 바뀌고 해당 코드가 포함되지 않기 때문에 복사 할 수 없습니다. 내 유일한 해결책은 모든 ActiveX를 Form Control로 변경하는 것이라고 생각합니다.
도움을 주셔서 감사합니다.
구체적으로 이렇게 한 적이 없지만이 링크는 어떤 용도로 사용됩니까? [링크] (http://www.ozgrid.com/Excel/free-training/ExcelVBA2/excelvba2lesson21.htm) 오브젝트가 필요해 보이는 것처럼 보입니다. – Clusks
그 소리는 시작처럼 들리지만, 많은 감사. – user6782845