2017-12-15 5 views
0

Ich bin neu in der Codierung und bin auf der Suche nach etwas Hilfe. Ich habe hier einen Code, der mir den Fehler "Case außerhalb Select Case" gibt, aber mein Fall ist in "Select Case" und "End Select", so dass ich nicht sicher bin, was ich falsch mache.Fall außerhalb Fall auswählen Kompilieren Fehler

Sub codematch() 

Dim wbk As Workbook 
Select Case response = MsgBox("Is the cursor in the first cell of the column?", vbYesNo, "Code Finder") 
Case condition1 
    If response = 6 Then 
     Set wbk = Workbooks.Open("C:\test.xlsm") 
     Call wbk 
     ActiveCell.Offset(0, 1).Select 
     ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],'[test.xlsm]Sheet1'!C1:C2,2,0)" 
     Do Until ActiveCell = "" 
     Call wbk.Close(False) 
Case condition2 
    If response = 7 Then 
    response = MsgBox("Position the Cursor in the correct location and try again", vbOKOnly) 
    End If 
End Select 
End Sub 
+1

fehlt 'End If' Recht vor' Fall condition2' – PatricK

+0

Das 'Select Case' ist nicht einmal zur Arbeit zu gehen, wenn Sie das reparieren' Wenn '. (Nun, es könnte "funktionieren", aber ich bezweifle, dass es tun wird, was Sie denken.) Die Variable "response" ('0'?) Wird mit dem Ergebnis Ihrer' MsgBox' verglichen. Wenn "response" mit der "MsgBox" übereinstimmt, wird der erste Fall ausgeführt, wenn "condition1" zu "True" führt oder der zweite Fall, wenn "condition1" den Wert "False" und "condition2" den Wert "True" hat. Wenn "response" nicht dasselbe wie "MsgBox" ist, wird der erste Fall ausgeführt, wenn "condition1" zu "False" führt oder der zweite Fall, wenn "condition1" "True" und "condition2" ist "False" . – YowE3K

+1

müssen Sie die Verwendung von 'Select Case'-Anweisung studieren. ... es funktioniert auf eine andere Weise als du denkst ... Wenn du wüsstest, was es tut, hättest du nicht die "if" Aussage in der 'case' Aussage – jsotola

Antwort

0

Die meisten Ihrer Code ist ehrlich gesagt sinnlos. Wen kümmert es, wo der Benutzer den Cursor hat.

Sub codematch() 
dim target as range 
set target = range("B1") 'or whever you want to start 
Dim wbk As Workbook 
Set wbk = Workbooks.Open("C:\test.xlsm") 
Target.FormulaR1C1 = "=VLOOKUP(RC[-1],'[test.xlsm]Sheet1'!C1:C2,2,0)" 

do 
    set target = target.offset(1,0) 
    target.offset(-1,0).copy target 
loop until target.offset(0,-1)="" 
target.clear 
target.parent.columns(target.column).cells.formula = 
_target.parent.columns(target.column).cells.value 'convert to values 
wbk.close false 
end sub 

Ist das, was ich denke, Sie versuchten, zu tun