Select Case variable definieren fout

Status
Niet open voor verdere reacties.

kruimeltjes

Gebruiker
Lid geworden
30 sep 2009
Berichten
222
Beste allemaal,

Ik ben bezig een macro te schrijven in excel (2010) en ik loop tegen een foutmelding aan waar ik de oplossing zo snel niet van zie. Misschien dat iemand anders hem wel zo ziet? Zou super zijn!

Dit is de code;

Code:
Sub Macro6()

Dim strName1, strName2, strName3 As String
visit = strName1 And strName2 And strName3

strName1 = InputBox(Prompt:="Enter name for first visit (e.g. 'V01)", _
          Title:="Specify T1", Default:="Visit 1")
strName2 = InputBox(Prompt:="Enter name for second visit (e.g. 'V02)", _
          Title:="Specify T3", Default:="Visit 2")
strName3 = InputBox(Prompt:="Enter name for third visit (e.g. 'V03)", _
          Title:="Specify T3", Default:="Visit 3")
          
Select Case visit
    Case Is = strName1
        Columns("A:A").Select
            Selection.Replace What:=strName1, Replacement:="T1", LookAt:=xlPart, _
            SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    Case Is = strName2
        Columns("A:A").Select
            Selection.Replace What:=strName2, Replacement:="T2", LookAt:=xlPart, _
            SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    Case Is = strName3
        Columns("A:A").Select
            Selection.Replace What:=strName3, Replacement:="T3", LookAt:=xlPart, _
            SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    Case Else
        Exit Sub
End Select

End Sub

Groetjes,

Simone
 
En waar krijg je die foutmelding? Ik zie wel een paar dingen die vreemd zijn:
1. Je declaratie is inconsequent; je declareert alleen strName3 als string, de andere 2 als variant. zou ik zo doen:
Code:
Dim strName1 As String, strName2 As String, strName3 As String
En wat moet dit doen?
Code:
visit = strName1 And strName2 And strName3
Deze regel staat onder de declaraties, en de variabelen zijn dus sowieso dan hartstikke leeg.
 
Ik denk dat je beter eerst even kunt vertellen wat je wil bereiken.

Sub Macro6()
Code:
Select Case InputBox("Enter name for first visit (e.g. 'V01)", "Specify T1", "Visit 1") & InputBox("Enter name for second visit (e.g. 'V02)", "Specify T3", "Visit 2") & InputBox("Enter name for third visit (e.g. 'V03)", "Specify T3", "Visit 3")

Case "Visit 1"
 
Laatst bewerkt:
Ja dat had ik inderdaad ook al door, heb ondertussen al wat lopen sleutelen en de code is nu als volgt;

Code:
Sub Macro6()

Dim strName1 As String
Dim strName2 As String
Dim strName3 As String
Dim visit As Variant

strName1 = InputBox(Prompt:="Enter name for first visit (e.g. 'V01)", _
          Title:="Specify T1", Default:="Visit 1")
strName2 = InputBox(Prompt:="Enter name for second visit (e.g. 'V02)", _
          Title:="Specify T2", Default:="Visit 2")
strName3 = InputBox(Prompt:="Enter name for third visit (e.g. 'V03)", _
          Title:="Specify T3", Default:="Visit 3")
          
Select Case visit
    Case 1 = strName1:
        Columns("A:A").Select
            Selection.Replace What:=strName1, Replacement:="T1", LookAt:=xlPart, _
            SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    Case 2 = strName2:
        Columns("A:A").Select
            Selection.Replace What:=strName2, Replacement:="T2", LookAt:=xlPart, _
            SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    Case 3 = strName3:
        Columns("A:A").Select
            Selection.Replace What:=strName3, Replacement:="T3", LookAt:=xlPart, _
            SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    Case Else
        Exit Sub
End Select

Hij geeft nu een run-time error (13) type mismatch
 
Wat ik wil doen?

Ik heb een excel file waarin gegevens staan van 1 persoon die 3x (in dit geval) is langs geweest. Uit die bezoeken is een immense hoeveelheid gegevens voort gekomen. Om de rest van macro te laten draaien moet ik dus de visits (die voor iedere persoon anders zijn) vervangen voor T1, T2 en T3.

Ik wil met een invoervenster laten invoeren welk visits in deze excel file staan en dan deze laten vervangen via een macro.

Wat betreft dit stuk;

Code:
visit = strName1 And strName2 And strName3

dat is nu juist waar ik op vast loop. Ben er nog niet uit hoe ik deze moeten doen ivm de select case statement die ik wil maken.

Ik heb deze codering werkende alleen dan met een if then statement en daar ben ik niet helemaal happy mee;
Code:
Sub Macro5()
'
' Macro5 Macro
'
Dim strName1 As String
Dim strName2 As String
Dim strName3 As String

strName1 = InputBox(Prompt:="Enter name for first visit (e.g. 'V01)", _
          Title:="Specify T1", Default:="Visit 1")
strName2 = InputBox(Prompt:="Enter name for second visit (e.g. 'V02)", _
          Title:="Specify T2", Default:="Visit 2")
strName3 = InputBox(Prompt:="Enter name for third visit (e.g. 'V03)", _
          Title:="Specify T3", Default:="Visit 3")
          

        If strName1 = "Visit 1" Or strName1 = vbNullString Then
           Exit Sub
           Else
                Columns("A:A").Select
                    Selection.Replace What:=strName1, Replacement:="T1", LookAt:=xlPart, _
                    SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
                    ReplaceFormat:=False
        End If
        
        If strName2 = "Visit 2" Or strName2 = vbNullString Then
           Exit Sub
           Else
                Columns("A:A").Select
                    Selection.Replace What:=strName2, Replacement:="T2", LookAt:=xlPart, _
                    SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
                    ReplaceFormat:=False
        End If
        
        If strName1 = "Visit 3" Or strName3 = vbNullString Then
            Exit Sub
            Else
                Columns("A:A").Select
                    Selection.Replace What:=strName3, Replacement:="T3", LookAt:=xlPart, _
                    SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
                    ReplaceFormat:=False
        End If

End Sub
 
Maar wat denk je dat dit doet dan?
Code:
visit = strName1 And strName2 And strName3
Of anders gezegd: wat zou het moeten doen volgens jou?

(off topic: ben je gestopt met Access? ;) )
 
(off topic: nee absoluut niet maar excel is weer even wat anders (en ook vba:D)

Ik had gehoopt dat dat het antwoord zou zijn geweest! Ondertussen ben ik er al wel achter dat dat het absoluut niet is!
 
Maar wil je de 3 strings samenvoegen, of wil je een check doen op 1 (of alle) van de 3 strings? Ik snap het nog niet helemaal.
Code:
vist = strName1
lever True of False op, en dat kun je ook op de 2 andere testen. Een test op alle 3 levert ook True of False op, maar dat doe je dan ook anders als je nu doet.
 
Wat ik wil is dat die alle benoemde visits (via de inputbox) hernoemt uiteindelijk, zoals ik al zei met een if then statement heb ik staan maar heel netjes is die niet, daarom dacht ik ik bouw hem om naar een select case
 
Code:
sub M_snb()
   c00=inputbox("number for visit",,"1")
   columns(1).replace "Visit " & c00, "T" & c00
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan