Avatar billede laje3 Nybegynder
31. januar 2002 - 16:58 Der er 10 kommentarer og
1 løsning

Anvendelse af Userform i Excel

Hej!

Jeg har oprettet en knald god userform i VB (Excel).
Den Userform vil jeg gerne have automatisk popper op, når man går ind i to bestemte sheets i samme Excel-fil og jeg ønsker også at man kan aktivere den via en knap med en assigned macro i hver enkelt sheet.

Men! Hvordan kalder jeg den? Jeg har prøvet med en application.run - men det virker ikke.

Hvis det har nogen betydning anvendes Excel 97 (eng)

Kan nogen hjælpe?

Pft.

Mvh

Laje
Avatar billede Slettet bruger
31. januar 2002 - 17:18 #1
Modulnavn.makronavn
Avatar billede kedde65 Praktikant
31. januar 2002 - 17:19 #2
På den event der hedder beforeSave ved woorkbook indsætter du flg kode.

Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Public Event UserNameNotFound()
Public Event UserNameFound()


Private Function NTDomainUserName() As String
    Dim strbuffer As String
    Dim inglen As Long
    Const dhcmaxusername = 255
   
    strbuffer = Space(dhcmaxusername)
    inglen = dhcmaxusername
    If CBool(GetUserName(strbuffer, inglen)) Then
        NTDomainUserName = Left(LCase$(Left$(strbuffer, inglen - 1)), 100)
        RaiseEvent UserNameFound
        Else
            NTDomainUserName = ""
            RaiseEvent UserNameNotFound
        End If
End Function

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Range("a1").Value = NTDomainUserName
End Sub

Kedde
Avatar billede Slettet bruger
31. januar 2002 - 17:19 #3
Du skal også lave en procedure der loader og viser formen. Det er den du skal kalde fra kappen.
Avatar billede bernhof Nybegynder
31. januar 2002 - 17:20 #4
'For at vise formen ved aktivering af to bestemte sheets, indsæt flg. i koden for ThisWorkbook i VB:
'----------------------------------

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If ActiveSheet.Name = "Sheet1" Or ActiveSheet.Name = "Sheet2" Then
        UserForm1.Show
    End If
End Sub

'For at udføre en handling ved et klik på en knap i et sheet, indsæt da flg. i koden for dette sheet, hvor CommandButton1 er navnet på knappen.
'----------------------------------

Private Sub CommandButton1_Click()
    UserForm1.Show
End Sub

'-----------------------------
'I alle tilfælde med UserForm1.Show kan du vælge at tilføje vbModal efter .Show, hvis formen skal vises modalt - altså:
'UserForm1.Show vbModal

/Mikbj
Avatar billede bernhof Nybegynder
31. januar 2002 - 17:21 #5
Husk at rette UserForm1 til navnet på din UserForm
Avatar billede bernhof Nybegynder
31. januar 2002 - 17:23 #6
kedde65 >> det der svar hørte vist til hér: http://www.eksperten.dk/spm/166460 :)
Avatar billede kedde65 Praktikant
31. januar 2002 - 17:37 #7
mikbj>>  Jeg takker for at du gjorde opmærksom på det. Beklager det måske lidt fejlagtige indlæg her :-))

Kedde
Avatar billede bernhof Nybegynder
31. januar 2002 - 17:41 #8
Hov, glemte også lige at sige at du skal rette "Sheet1" og "Sheet2" til navnene på de to sheets, som viser formen! :)
Avatar billede laje3 Nybegynder
31. januar 2002 - 17:43 #9
Har testet det, og der virker fuldstændig efter hensigten! Mange tak for hjælpen!
Avatar billede bernhof Nybegynder
31. januar 2002 - 17:46 #10
Det var så lidt! :)
Avatar billede johs_j Novice
31. januar 2002 - 17:47 #11
Gå ind i Rediger Makro. Dobb.klik på det arknavn hvor userformen skal virke.
I vinduet skriver du følgernde:

Private Sub Worksheet_Activate()
    userFormNavn.Show
End Sub

Du kan selvfølgelig gøre det samme på flere Ark.

For at få knappen til at kalde:

Opret denne makro i et Modul og tildel den til en knap:

Sub ViForm()
    userFormNavn.Show
End Sub
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
Kurser inden for grundlæggende programmering

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