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