Avatar billede magmat Nybegynder
23. december 2006 - 21:28 Der er 10 kommentarer og
1 løsning

makro med en popup med ja/nej valg indbygget

Jeg har en makro der skal hente data fra et eksernt ark

Da importen automatisk overskriver en masse dat vil jeg gerne være sikker på at importen ikke sker utilsigtet.

Derfor kunne jeg godt tænke mig en popup der spørger:
Er du sikker på at du vil importere data? JA/NEJ

Derefter skal den fortsætte med min makro hvis jeg siger ja og stoppe helt op hvis man siger nej
Avatar billede stry Nybegynder
23. december 2006 - 21:50 #1
Dim Svar
Svar = MsgBox("Vil du fortsætte", vbYesNo)
    If Svar = 6 Then '6 = Ja
        'den kode du vil afvikle
            Else
        Exit Function
    End If
Avatar billede stry Nybegynder
23. december 2006 - 21:51 #2
Indsæt ovenstående lige inden koden eksekveres.
Avatar billede stry Nybegynder
23. december 2006 - 21:53 #3
"Exit Function" skal ændres til "Exit Sub" hvis det er en makro....
Avatar billede stry Nybegynder
23. december 2006 - 21:56 #4
Nedenstående er måske mere logisk

Dim Svar As Boolean
Svar = MsgBox("Vil du fortsætte", vbYesNo)
    If Svar = True Then
        'den kode du vil afvikle
            Else
        Exit Sub
    End If
Avatar billede magmat Nybegynder
23. december 2006 - 22:19 #5
Det virker ikke rigtigt
Den vise godt nok  spørgsmålet om man vil fortsætte men uanset om jeg siger ja eller nej så fortsætter den med min makro.
Kan du se hvorfor?


Sub Import()
' Makro indspillet 05-12-2006 af ZZ
'

'
Dim Svar As Boolean
Svar = MsgBox("Vil du fortsætte", vbYesNo)
    If Svar = True Then
        'den kode du vil afvikle
   
    Application.ScreenUpdating = False
    Worksheets("Faxe").Activate
    Range("A2:H999").Select
    Selection.ClearContents
    Selection.QueryTable.Delete
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\regnskab.txt", _
        Destination:=Range("A3"))
        .Name = "regnskab_1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlOverwriteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlFixedWidth
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 2, 1, 1, 1, 1, 1, 1)
        .TextFileFixedColumnWidths = Array(5, 3, 45, 15, 15, 15, 15)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
        Application.ScreenUpdating = True
    End With

    Else
        Exit Sub
    End If
End Sub
Avatar billede stry Nybegynder
23. december 2006 - 22:26 #6
du har ret, det virker ikke - brug den første løsning med 6-tallet
Avatar billede stry Nybegynder
23. december 2006 - 22:27 #7
Sub Import()
' Makro indspillet 05-12-2006 af ZZ
'

'
Dim Svar
Svar = MsgBox("Vil du fortsætte", vbYesNo)
    If Svar = 6 Then
        'den kode du vil afvikle
 
    Application.ScreenUpdating = False
    Worksheets("Faxe").Activate
    Range("A2:H999").Select
    Selection.ClearContents
    Selection.QueryTable.Delete
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\regnskab.txt", _
        Destination:=Range("A3"))
        .Name = "regnskab_1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlOverwriteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlFixedWidth
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 2, 1, 1, 1, 1, 1, 1)
        .TextFileFixedColumnWidths = Array(5, 3, 45, 15, 15, 15, 15)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
        Application.ScreenUpdating = True
    End With

    Else
        Exit Sub
    End If
End Sub
Avatar billede magmat Nybegynder
23. december 2006 - 22:42 #8
Yes, det virker perfekt
Smider du lige et svar?

Så lige et tillægsspørgsmål.
Kan man lave tvunget linieskift i den tekst der kommer frem?

Jeg havde tænkt mig at der skal stå følgende tekst:

Du har valgt at starte import af data. Er du sikker på at du vil fortsætte? Importen vil overskrive alle tidligere indlæste tal!

Det ville være rart med et linieskift midtvejs så boksen ikke bliver så bred
Avatar billede stry Nybegynder
23. december 2006 - 22:44 #9
"Du har valgt at starte import af data. Er du sikker på at du vil fortsætte?" & vbcr & "Importen vil overskrive alle tidligere indlæste tal!"
Avatar billede magmat Nybegynder
23. december 2006 - 22:49 #10
Alt for godt
Tusind tak
Avatar billede stry Nybegynder
23. december 2006 - 22:50 #11
Velbekomme :D
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester