2014-01-27 2 views
0

코드를 사용하여 방금 연 파일의 파일 이름을 특정 셀로 설정하려고합니다. 통합 문서 이름과 같게 셀 값을 가져올 수 없다는 것을 제외하고는 제대로 작동합니다. 코드를 디버깅 할 때 wb name에 대한 변수가 올바른 문자열임을 알 수 있습니다. 아래의 코드에서이 서브 루틴을 호출하면 wbTempName이 방금 연 통합 문서의 경로로 전달되고 iTemp는 첫 번째 빈 열 (별도의 서브 루틴에서 찾은 정수)입니다. 여기에 코드입니다 : ". 범위 (셀 (2, iTemp)) 값 = sWBName"나는이 코드를 호출 할 때범위, 셀을 사용하여 특정 셀을 문자열로 설정 한 다음 병합하고 가운데에 맞 춥니 다?

Sub CMM_93Cam(ByVal wbTempName As Workbook, ByVal iTemp As Integer) 
' 
' CMM_93Cam Macro 
' 
    'Set necessary variables 
    sColumnTwo = ConvertToLetter(iTemp + 2) 

    'Paste filename into sheet 
    wbTempName.Activate 
    sWBName = ActiveWorkbook.Name 
    Range(Cells(2, iTemp)).Value = sWBName 
    Range(Cells(2, iTemp), Cells(2, iTemp + 2)).Select 
    Selection.Merge 

'Code that works 

End Sub 

, 내가에 런타임 오류 1004 얻을 줄 : "개체의 방법 '범위' '_Global'이 (가) 실패했습니다.

다른 문제는 코드를 병합하고 가운데 정렬하는 것이 효과가 없다고 생각합니다 (원래 셀 값을 설정하려고 시도한 선 앞에 문제가 발생했다고 생각했습니다) .

누구든지 내가 뭘 잘못하고 있는지 알아?

답변

0

는 다음과 같이 코드를 수정하십시오 :

Sub CMM_93Cam(ByVal wbTempName As Workbook, ByVal iTemp As Integer) 
    Application.DisplayAlerts = False 
    'Set necessary variables 
    sColumnTwo = ConvertToLetter(iTemp + 2) 

    'Paste filename into sheet 
    sWBName = wbTempName.Name 

    With ThisWorkbook.ActiveSheet 
     .Cells(2, iTemp).Value = sWBName 
     .Range(.Cells(2, iTemp), .Cells(2, iTemp + 2)).Merge 
    End With 

    'Code that works 
    Application.DisplayAlerts = True 
End Sub 

, 통합 문서의 셀이 매크로 페이스트 통합 문서 이름이 현재의 매크로 코드가 실행되는 곳. 통합 문서의 셀에 통합 문서 이름을 붙여 넣으려면 With ThisWorkbook.ActiveSheetWith wbTempName.ActiveSheet

+0

으로 변경하십시오.이 코드를 사용하면 "메서드 또는 데이터 멤버를 찾을 수 없습니다."오류가 발생합니다. – ilarson007

+0

With ThisWorkbook을 With ThisWorkbook.Worksheets ("Sheet1")'로 변경하고 올바른 시트 이름을 지정하십시오. –

+0

활성 워크 시트를 참조 할 수있는 방법이 있습니까? 활성 워크 시트는이 서브 루틴을 호출하기 전에 평가되는 userform의 optionbutton을 기반으로 변경됩니다. – ilarson007

관련 문제