Avatar billede rene_nissen Nybegynder
08. september 2003 - 15:29 Der er 4 kommentarer

Excel, information på tværs af sheets.

Jeg har i Excel brug for have en tekstbox m.m. der er ens i mere end et faneblad. Data der står i tekstboksen må ikke ændres når man skifter faneblad.
Løsning der ikke er tilfredsstillende:
Lave en tekstboks pr. faneblad og gemme indholdet i en variabel.
Jeg har lavet en seperat form, som er modeless. Det virker næsten godt.
Der er bare et problem, hvis man skifter til andre applikationer, og så skifter tilbage kan man opleve at man kun ser formen, men ikke det bagved liggende regneark. Hvis man klikker et par gange kommer det frem, men det er ikke godt nok. Problemet opstår især ved applikationer der ligger til højre for Excel i proceslinjen.
Det jeg mangler til denne løsning er en event der bliver trigget når man skifter mellem f.eks. outlook og excel.
Glem activate/deactivate, gotFocus/lostFocus. De virker kun ved skift inde i den aktive applikation(i dette tilfælde Excel).
Jeg har også eksperimenteret med en anden løsning, nemlig at ligge en tekstboks i en værktøjslinie, det lykkedes også næsten, jeg kunne bare ikke finde en onChange property til den tekstboks jeg fik lavet, og dette er et must. Jeg fandt kun en onAction, og det er lig med enter, hvilket ikke er godt nok.
Hvis nogen kan fortælle hvordan man laver dette, kan det også accepteres som svar.
Altså, kort fortalt mangler jeg en af to løsningsforslag:
1) Eventtrigger til skift mellem f.eks. outlook og excel.
2) onChange property til en tekstbox i en værktøjslinje.
Jeg håber at I kan hjælpe mig :)
Avatar billede kabbak Professor
10. september 2003 - 00:05 #1
Her kan du lave en linie på commandbaren.

Disse 2 i woorkbook modulet

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.CommandBars("Info").Delete
End Sub

Private Sub Workbook_Open()
Call InfoMenu
End Sub

Denne i et selvstændigt modul

Public Sub InfoMenu()
For Each cbar In CommandBars
  If cbar.Name = "Info" Then
  GoTo Slut
    End If
Next
Set cbar1 = CommandBars.Add(Name:="Info", Position:=msoBarTop)

cbar1.Visible = True
  Set newItem = CommandBars("Info").Controls.Add(Type:=msoControlButton)
 
With newItem
    .BeginGroup = True
    .Caption = "Her kan du skrive en tekst der er lige så lang som skærmbredden"
    .Style = msoButtonCaption
    '.OnAction = "Menu"
End With
Slut:

End Sub
Avatar billede rene_nissen Nybegynder
10. september 2003 - 11:09 #2
Det er jo en knap. Som jeg sagde har jeg brug for et tekstfelt, hvor man kan kalde en routine/makro hvergang der sker ændringer i selve feltet, altså ála onChange og ikke onAction. Ændringerne skal ske i 'run time'. Og nej, msoControlEdit, har ikke en onChange property. Det er jo netop det der er problemet.
Avatar billede rene_nissen Nybegynder
10. september 2003 - 11:10 #3
Men tak for forsøget :-)
Avatar billede kabbak Professor
01. februar 2004 - 00:55 #4
Lukketid.
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