Gå til innhold

Excel, macro, problem ved kjøring fra hurtigtast


Anbefalte innlegg

Jeg holder på med å lage en macro som først åpner "annenfil.xls" dersom denne ikke allerede er åpen. Når annenfil.xls allerede er åpen, da fungerer macroen perfekt, men hvis macroen først må åpne denne filen, da stopper den opp etterpå. Det skjer med andre ord ingenting etter at annenfil.xls er åpnet.

 

Det som virkelig får meg til å rive håret ut av hodet, er at sistnevnte bug kun inntreffer når jeg kjører macroen fra en hurtigtast. Trykker jeg Alt+F8 og kjører macroen derfra, da fungerer den, samme hvis jeg lager en knapp, men bruker jeg den tilegnede hurtigtasten, da blir det altså krøll. Hurtigtasten fungerer jo, men den gjør noe rart med macroen. Er dette et kjent problem?

 

Jeg slenger med koden også. Sikkert et amatørmessig preg her, men den fungerer greit.

Sub blabla()
Application.ScreenUpdating = False
Variabel = InputBox("tekst", "tittel")
On Error Resume Next
Windows("annenfil.xls").Activate
If Not Err = 0 Then
Workbooks.Open Filename:="C:\annenfil.xls"
End If

With Range("g2:g200")
   Set c = .Find(Variabel, LookIn:=xlValues)
   If Not c Is Nothing Then
   firstAddress = c.Address
   c.Offset(0, -6).Range("A1:f1").Copy

ActiveWindow.ActivateNext
   ActiveCell.Offset(0, -6).Range("A1").Select
   ActiveSheet.Paste
   Application.CutCopyMode = False
   End If
ActiveCell.Offset(0, 6) = Variabel
ActiveCell.Offset(1, 6).Select
End With
End Sub

Og under ThisWorkbook har jeg...

Private Sub workbook_open()
Application.OnKey "+^{A}", "blabla"
End Sub

Lenke til kommentar
Videoannonse
Annonse

Ja jeg skjønner at frisyren din står i fare nå. Kode kjørt med OnKey-hurtigtaster stanser og nullstiller seg ved workbooks.open. Det er et sted mellom uheldig design og en bug.

 

Du kommer rundt det ved å kalle en ekstern prosedyre. Merk at jeg har deklarert noe over første makro -og forøvrig deklarert resten.

 

'********* øverst************

Option Explicit

Dim Variabel As String

Dim oTarget As Worksheet

 

Sub blabla()

Dim C As Range

Dim firstAddress As String

 

Dim OBk As Workbook

Dim oSource As Worksheet

Dim cTarget As Range

 

Set oTarget = ActiveSheet

Set cTarget = ActiveCell

 

If Variabel = "" Then

Variabel = InputBox("tekst", "tittel")

If Variabel = "" Then Exit Sub

End If

 

On Error Resume Next

Set OBk = Workbooks("annenfil.xls")

 

If OBk Is Nothing Then

Application.OnTime Now, "OpenIt"

Exit Sub

End If

Set oSource = OBk.Sheets(1)

oTarget.Parent.Activate

DoEvents

 

With oSource.Range("g2:g200")

Set C = .Find(Variabel, LookIn:=xlValues)

If Not C Is Nothing Then

firstAddress = C.Address

C.Offset(0, -6).Range("A1:f1").Copy cTarget.Offset(0, -6).Range("A1")

Application.CutCopyMode = False

End If

cTarget.Value = Variabel

cTarget.Offset(1, 0).Select

Variabel = ""

End With

End Sub

 

Private Sub OpenIt()

Workbooks.Open Filename:="C:\temp\annenfil.xls"

DoEvents

oTarget.Parent.Activate

Call blabla

End Sub

 

'********* slutt************

 

HTH. Beste hilsen Harald

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...