Det var for at undgå at skrive Sheets("Beregninger").Range("c27") så mange gange Vil det sige at hvis jeg ændre min makro til nedenstående, så virker den?:
Set ActiveWorkbook.Sheets("Beregninger").Range("C27") = Version <---- ændret If Version < 1 Or Version = "" Then Version = 1 Else Version = 2 End If
Flemmingdahl> det er ok, men har jeg så ikke problemer med ELSE IF?
Jeg får sandsynligvis nok flere værdi-muligheder i cellen, så der kan komme til at stå:
With ActiveWorkbook.Sheets("Beregninger").Range("C27") If .Value < 1 Or .Value = "" Then .Value = 1 Else if .. et eller andet.. .Value = 2 Else if .. et eller andet.. Else .. et eller andet.. End If End With
Nej for .Value vil jo altid være den værdi der er i cellen...
With ActiveWorkbook.Sheets("Beregninger").Range("C27") If .Value < 1 Or .Value = "" Then .Value = 1 Else if .Value ="Peter" Then .Value = "Søren" Else if .Value = 3 Then .Value = 4 Else .. et eller andet.. End If End With
eller
With ActiveWorkbook.Sheets("Beregninger").Range("C27") Select Case .Value Case Is < 1 Or "" .Value = 1 Case Is = 1 .Value = 2 Case Is = 2 .Value = 3 Case Else .Value = 9 End Select End With
Den har jeg før fravalgt, fordi jeg havde problemer med at kalde en anden procedure i en case. Kan man det?
Jeg får en fejl i Case Is < 1 Or "" - Type mismatch (Error 13)
Min procedure ser således ud: Public Sub Opdatering() With Workbooks("Stamdata").Sheets("Beregninger").Range("C27") Select Case .Value Case Is <= 1 Or "" .Value = 1 Case Is = 2 .Value = 2 Case Else Call NyMakro End Select End With End Sub
Det kan jeg godt fortælle dig.. Skriv Null i stedet for "" det vil løse dit problem..
Så den rigtige kode er:
Public Sub opdatering() With ActiveWorkbook.Sheets("Beregninger").Range("C27") Select Case .Value Case Is < 1 Or Null .Value = 1 Case Is = 1 .Value = 2 Case Is = 2 .Value = 3 Case Else .Value = 9 End Select End With End Sub
Dim rBeregn as Range Set rBeregn = Sheets("Beregninger").Range("C27")
Den længere Dim wbActive As Workbook Dim wsBeregn As Worksheet Dim rBeregn As Range Set wbActive = ActiveWorkbook Set wsBeregn = wbActive.Sheets("Beregninger") Set rBeregn = wsBeregn.Range("C27")
Flemmingdahl> Du bliver altså nødt til at være mere specefik, for jeg får stadig fejl: Prøv lige og se her:
Public Sub OpdateringAfVersion() 'Denne procedure skal styre versionerne 'Der ses efter hvilken version, der hentes over fra 'Beregninger. Celle C27 i skatteregnearket
'Besked sidst i processen om at der nu er opdateret Dim OpdtSkat As Variant OpdtSkat = Worksheets("Beregninger").Range("C28") Dim OpdtStam As Variant OpdtStam = Worksheets("Beregninger").Range("C23") Dim VersionSkat As Variant VersionSkat = Worksheets("Beregninger").Range("C27") Dim VersionStam As Variant VersionStam = Worksheets("Beregninger").Range("C22") Dim sLangTekst As String Dim Opdateringsår As Variant Opdateringsår = Worksheets("Beregninger").Range("C28")
If OpdtSkat = OpdtStam And VersionSkat = VersionStam Then
Application.ScreenUpdating = False 'Besked Om at der ingen opdateringer er sLangTekst = "Der er ingen opdateringer til rådighed!" & vbNewLine sLangTekst = sLangTekst & "" & vbNewLine sLangTekst = sLangTekst & "Skattebergningen er opdateret til og med år " & Opdateringsår & "!" & vbNewLine sLangTekst = sLangTekst & "" & vbNewLine sLangTekst = sLangTekst & "Mener du der bør være nye satser eller andre " & vbNewLine sLangTekst = sLangTekst & "ændringer, så kontakt den systemansvarlige!" & vbNewLine IngenOpdatering = MsgBox(sLangTekst, vbOKOnly + vbInformation, "Ingen opdatering")
Else
'Forklaring mangler! If VersionStam <= 1 Or "" Then Call Version2 Else 'Case Else Call OpdateringAfStamdata End If
Så må vi jo se om den gamle revisorunderviser kan hente noget pædagogik frem igen :-)
For at din if sætning skal virke skal der stå: If VersionStam <= 1 Or VersionStam = "" Then
Denne her virker hos mig Public Sub OpdateringAfVersion() 'Denne procedure skal styre versionerne 'Der ses efter hvilken version, der hentes over fra 'Beregninger. Celle C27 i skatteregnearket
'Besked sidst i processen om at der nu er opdateret Dim OpdtSkat As Variant Dim OpdtStam As Variant Dim VersionSkat As Variant Dim VersionStam As Variant Dim Opdateringsår As Variant
If OpdtSkat = OpdtStam And VersionSkat = VersionStam Then
'Besked Om at der ingen opdateringer er MsgBox "Der er ingen opdateringer til rådighed!" & _ vbNewLine & vbNewLine & _ "Skattebergningen er opdateret til og med år" & Opdateringsår & "!" & _ vbNewLine & vbNewLine & _ "Mener du der bør være nye satser eller andre" & vbNewLine & _ "ændringer, så kontakt den systemansvarlige!", _ vbOKOnly + vbInformation, "Ingen opdatering"
Else
'Forklaring mangler! If VersionStam <= 1 Or VersionStam = "" Then Call Version2 Else 'Case Else Call OpdateringAfStamdata End If
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.