2013-11-21 4 views
1

변수에 저장된 값을 Excel 시트에서 검색 할 응용 프로그램이 필요한 시트를 만듭니다.
".Find"함수를 사용하고 있습니다.
내 문제는 내가 실제 값을 입력 할 때 작동하지만 변수 이름에 저장되어있는 동안 찾을 값을 찾을 수 없다는 것입니다.VBA 찾기 함수가 변수와 함께 작동하지 않습니다.

예를 들어 :

이 작동

Dim cellersd, celltid, ersdcol, tidcol 
Set cellersd = book.Worksheets(mon & yer).Range("5:5").Find("28/08/2013") 
Set celltid = book.Worksheets(mon1 & yer1).Range("5:5").Find("30/09/2013") 

If cellersd Is Nothing Then 
MsgBox "not found" 
Else 
MsgBox cellersd.Column 
End If 

If celltid Is Nothing Then 
MsgBox "not found" 
Else 
MsgBox celltid.Column 
End If 

이 나던 일

rsd = Worksheets("workload").Range("p4").Value 
tid = Worksheets("workload").Range("p3").Value 
... 

Dim cellersd, celltid, ersdcol, tidcol 
Set cellersd = book.Worksheets(mon & yer).Range("5:5").Find(rsd) 
Set celltid = book.Worksheets(mon1 & yer1).Range("5:5").Find(tid) 

If cellersd Is Nothing Then 
MsgBox "not found" 
Else 
MsgBox cellersd.Column 
End If 

If celltid Is Nothing Then 
MsgBox "not found" 
Else 
MsgBox celltid.Column 
End If 

그 ... 코드에서 그냥 다른 작업

을 수행하는 inbetween 다른 코드를 보여줍니다

오류가 있습니까? 나는 똑같이 작동 할 수있는 다른 검색 방법에 대한 제안에 대해서도 열려 있습니다. 고마워요. 나는 .Value가 날짜가 아닌를 반환 생각

rsd = str(rsd) 
tid = str(tid) 

:

+0

당신은 변수 문자열 또는 날짜 변수를 찾기 위해 노력하고 있습니까? –

+0

'tid = Worksheets ("workload"). 범위 ("p3"). Value', 이것을 입력하고'Msgbox rsd & "와"& len (rsd)'무엇을 얻을 수 있는지 말해주세요 –

+0

@SiddharthRout i 날짜에있는 문자의 길이가 – ChiomaJenni

답변

1

아마도

rsd = Worksheets("workload").Range("p4").Text 
tid = Worksheets("workload").Range("p3").Text 

을 시도하거나 당신이 작동하지 않습니다 .Value 또는 .Text을 유지하고자하는 경우는 문자열로 변환하려고 chould 끈. 작업 코드가 문자열을 사용하고 있습니다.

+0

괜찮습니다. 감사합니다. – ChiomaJenni

+1

은 @ hessr17과 같은 역할을했습니다. 감사합니다. – ChiomaJenni

+1

문자열로 변환되어 작동했습니다. – ChiomaJenni

1

이것은 변수의 경우,

사용 What:=rsd 작동이 정확한 단어가 ""사이 인 경우 What:="something"를 사용해야합니다.

당신이 다음 변수에서 변수를 찾을 필요하면 사용 :

Set find1 = variable1.Find(What:=variable2, LookIn:=xlValues) 

'Both work 
rsd = Worksheets("workload").Range("P4") 
tid = Sheets("workload").Range("P3") 
... 

Dim ersdcol, tidcol 
Dim cellersd As Object 
Dim celltid As Object 

Set cellersd = Sheets("mon & yer").Range("5:5").Find(What:=rsd, LookIn:=xlValues) 
Set celltid = Sheets("mon1 & yer1").Range("5:5").Find(What:=tid, LookIn:=xlValues) 


If cellersd Is Nothing Then 
MsgBox "not found" 
Else 
MsgBox cellersd.Column 
End If 

If celltid Is Nothing Then 
MsgBox "not found" 
Else 
MsgBox celltid.Column 
End If 
+1

왜 작동합니까? 설명. 또한 코드가 들여 쓰기되도록 글을 포맷하십시오. 자세한 내용은이 게시물을 확인하십시오. http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks – rayryeng

관련 문제