2013-05-23 3 views
1

나는 현재 구성하고있는 Access DB가 있습니다. 내 VB 교육은 Access에서하는 것보다 DB를 사용자 정의하는 데 필요한 부분과 조각입니다. 그래서 매우 드문 것입니다. 푸시하면 다음 코드가 실행되는 버튼이 있습니다. 코드가 제대로 작동합니다. 문제는 VB 화면으로 가서 디버그 메뉴에서 컴파일 할 때 "컴파일 오류 : 잘못된 속성 사용"이라는 오류가 발생합니다.컴파일 오류 : 잘못된 속성 사용

' Memo Line Button Script 
Private Sub Memo_Line_Click() 
On Error GoTo Memo_Line_Click_Err 

    If Me.Dirty Then Me.Dirty = False 
    Memo_Line ([Forms]![Logform]![HLCtrl]) 'error highlights ![HLCtrl] 

Memo_Line_Click_Exit: 
    Exit Sub 

Memo_Line_Click_Err: 
    MsgBox Error$ 
    Resume Memo_Line_Click_Exit 

End Sub 

Memo_Line은 공개 기능을 나타냅니다. 해당 코드는 다음과 같습니다.

' Copy Offer Memo Line Data to Clipboard Button Script 
Public Function Memo_Line(HLC) 
On Error GoTo Memo_Line_Click_Err 

    DoCmd.OpenForm "Log-Memo Line", acNormal, "", "[HL#]=" & "'" & HLC & "'", , acNormal 
    Call ClipBoard_SetData([Forms]![Log-Memo Line]![Memo]) 
    MsgBox ([Form_Log-Memo Line].[Memo] & " --- copied to Clipboard."), vbInformation, "Clipboard Details" 
    DoCmd.Close acForm, "Log-Memo Line" 

Memo_Line_Click_Exit: 
    Exit Function 

Memo_Line_Click_Err: 
    MsgBox Error$ 
    Resume Memo_Line_Click_Exit 

End Function 
+1

나는 약간 문 "이 코드는 잘 작동합니다."당황하고있어, 오류로 인해 컴파일되지 않습니다. VBA 편집기의 "일반"탭에서 '도구> 옵션 ...'아래에 "주문형 컴파일"옆에 체크 표시가 있습니까? 이것이 기본값이며, 코드를 변경하면 다음에 실행될 때 다시 컴파일됩니다. –

+0

예, 선택되었습니다. 나는 실제로 코드가 첨부 된 버튼을 클릭하면 코드가 예상대로 작동한다는 것을 의미합니다. DB의 다른 부분에서 코드를 편집하고 디버그, 컴파일을 선택하면 오류가 발생합니다. – Dragonsen

답변

1

함수 호출에서 괄호를 버립니다. Memo_Line가 값을 반환하고 그 값으로 뭔가를하고 싶어

Memo_Line [Forms]![Logform]![HLCtrl] 

경우에는 괄호가 필요합니다. Memo_Line는 값을 반환하지 않기 때문에

MyVariable = Memo_Line([Forms]![Logform]![HLCtrl]) 
Debug.Print Memo_Line([Forms]![Logform]![HLCtrl]) 

사실, 당신은 서브 루틴 대신 함수를 만들 수 있습니다. 나는 당신이 그 변환을 제안하지만, 당신이 경우에 이러한 스타일 중 하나를 사용하여 호출하지 해요 : 샘플 데이터베이스에서

Memo_Line [Forms]![Logform]![HLCtrl] 
Call Memo_Line([Forms]![Logform]![HLCtrl]) 

, 양식은 "메모 라인"라는 명령 단추가 포함되어 있습니다. 일부 상황에서는 Access가 공백의 밑줄 대신 사용하므로 "메모 줄""Memo_Line"이됩니다. 문제는 "Memo_Line"이라는 함수가 있다는 것입니다. 오류없이 컴파일

Memo_Line ([Forms]![Logform]![HLCtrl]) 'error highlights ![HLCtrl] 

코드를 내가 "cmdMemo_Line" 명령 단추 이름을 변경 후 : 불행하게도 액세스 대신이 코드 라인에서 함수의 명령 단추를 참조하고 생각한다.

공간 대 밑줄로 인한 이름 충돌이 의심 할 여지없이 의심 스럽습니다. 다른 개체 이름과 마찬가지로 컨트롤 이름의 공백을 피하는 것이 가장 좋습니다. 전지; 양식; 등

+0

두 옵션 모두 시도해도 여전히 오류가 발생하지만 이제는 Memo_Line 대신에 강조 표시됩니다! [HLCtrl] – Dragonsen

+0

아니요, 여전히 오류 및 강조 표시 Memo_Line – Dragonsen

+0

HLC는 이미 공용 변수로 HLC를 문자열로 선언했습니다. 다른 기능에서 HLC를 사용했습니다. – Dragonsen

-1

시도 대신에 통화 기능이 하나를 사용하는

방법에 대한 설명 다음 Application.Run "Memo_Line"

관련 문제