Programmering
Frågor & Svar 101 -

 

 

Nr 112
F: Jag vill enbart visa ett formulär när en arbetsbok öppnas.
S: Det enklaste är att:


1. Infoga I ThisWorkbook-modulen följande procedur:

Sub Workbook_Open()

  ThisWorkbook.Windows(1).Visible = False

  frmStart.Show

End Sub

2. I formulärets modul infogas följande:

Private Sub UserForm_Terminate()

  ThisWorkbook.Windows(1).Visible = True

End Sub


Vill vi överhuvudtaget inte visa Excel när formuläret visas ersätts
ThisWorkbook.Windows i ovanstående procedurer med:

Application.Visible = False  och Application.Visible = True

 

Nr 111
F: Vilket är det enklaste sättet för att öppna en e-postklient samt skapa ett utgående e-post ?
S: Följande lilla procedur uppfyller alla önskemålen:

Option Explicit

 Sub Open_Create_E_Mail()

   Dim wbBook As Workbook  

   Set wbBook = ThisWorkbook

 

   wbBook.FollowHyperlink "mailto:"

End Sub

Nr 110
F: Hur kan jag enklast kontrollera att ett flertal celler har värden?
S: Det som är en smidig lösning är att skapa namn för samtliga celler med ett gemensamt prefix såsom "rn" och därefter använda sig av följande kod:
 

For Each nName In wbBook.Names

   If nName.Name Like "ch*" Then

      With wsSheet

         If .Range(nName).Value = "" Then

            .Range(nName).Select

            MsgBox stMsg, vbCritical, stTitle

            Exit Sub

         End If

      End With

   End If

Next nName

 

Där variabeln nName refererar till objektet Name.

Nr 109
F: Jag vill inte att ändringar ska sparas när en arbetsbok stängs - Hur gör jag?
S: Enklast är följande lösning:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

   Me.Saved = True

End Sub

Nr 108
F: Hur öppnar jag MS Publisher mha VBA?
S: Ett sätt är följande:

Sub Open_Publisher()

   Dim oPublish As Object

   Dim oPubDoc As Object

 

   Set oPublish = CreateObject("Publisher.Application")

   Set oPubDoc = oPublish.NewDocument

 

   oPublish.ActiveWindow.Visible = True

End Sub

Nr 107
F: Jag försöker öppna MS Outlook men får inte till det riktigt - Är det möjligt?
S: Om det inte krävs att en s k Profil ska väljas när Outlook startar så fungerar följande lösning:

Sub Open_OutLook()

   Dim oOutlook As Object

   Dim oNameSpace As Object

   Dim oInbox As Object

 

   Set oOutlook = CreateObject("Outlook.Application")

   Set oNameSpace = oOutlook.GetNamespace("MAPI")

   Set oInbox = oNameSpace.Folders(1)

   Set oInbox = oInbox.Folders("Inbox")

   oInbox.Display

End Sub

Nr 106
F: Jag försöker öppna MS Access från Excel men det verkar som att Access inte startar?
S: En lösning som fungerar är följande:

Sub Open_Access()

   Dim oAccess As Object

   Set oAccess = CreateObject("Access.Application")

 

   With oAccess

      .Visible = True

      .UserControl = True

   End With

End Sub

Nr 105
F: Hur kan jag flytta på en namngiven hel rad i ett och samma arbetsblad på ett enkelt sätt?
S: Följande procedur visar på en möjlig lösning:

Sub Flytta_Rad()

   Dim rnData As Range

   With ActiveSheet

      Set rnData = .Range("Test")

   End With

   With Application

      .ScreenUpdating = False

      rnData.Cut Range("14:14")

      .ScreenUpdating = True

   End With

End Sub

Nr 104
F: Hur förhindrar jag att användare försöker spara en arbetsbok med kommandot "Spara som..."
S: Enklast är att vi gör en kontroll via händelseproceduren BeforeSave såsom:

Option Explicit

 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

   If SaveAsUI = True Then Cancel = True

End Sub

Nr 103
F: Är det möjligt att formatera texten i utgående e-post, där vi styr MS Outlook från Excel?
S: Istället för användning av egenskapen "Body" för objektet "MailItem" så använder vi "HTMLBody" enligt följande:
 

HTMLBody = "<html><body><b><h3>Texten här</h3></b></body></html>"
 

Nr 102
F: Jag vill inte att mina användare ska kunna högerklicka i ett speciellt arbetsblad - Hur löser jag det enklast vis?
S: Följande händelseprocedur kan användas och som placeras i det aktuella arbetsbladets modul:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

   Cancel = True

   MsgBox "Högerklicka i detta arbetsblad kan ej ske.", vbInformation

End Sub

Nr 101
F: Hur kan jag starta MS Internet Explorer och öppna en sida inifrån Excel?
S: Enklast är följande procedur:

Sub Activate_IE()

   Dim oIE As Object  

   Set oIE = CreateObject("InternetExplorer.Application")  

   With oIE

      .Visible = True

      .Navigate "http://www.xldennis.com"

   End With  

   Set oIE = Nothing  

End Sub