13. december 2003 - 12:02Der er
23 kommentarer og 1 løsning
Kopier med VBA uden at ændre cellernes struktur
Jeg har lavet flere projektmapper til anvendelse af andre på min arbejdsplads. Selvom jeg har forsøgt at vise hvor data skal skrives (gult markerede celler) hænder det alligevel at der skrives i de forkerte. Så gør brugeren det at hun/han forsøger at kopiere data (tekst)(ctrl + X) fra en merged celle til en anden hvorefter cellernes struktur ødelægges. 1) Jeg ville derfor gerne inaktivere ctrl + C, ctrl + X, ctrl + V 2) Lave en makro der kan hjælpe med at flytte texetn til det korrekte sted.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
er både den rigtige celle og den forkerte celle merged
hvis det kun er den ene celle der er merged kan denne makro flytte værdien/ teksten.
Det gøres ved at makrere cellen med værdien og den hvor værdien er forkert skrevet og så kør makroen.
Sub BytOm() Dim A() As Variant, MM As Boolean b = Selection.Cells.Count ReDim A(b) i = 1 MM = False For Each c In Selection Q = c.Address If Range(c.Address).MergeCells Then If MM = False Then A(i) = c.Value i = i + 1 MM = True End If Else A(i) = c.Value i = i + 1 MM = False End If Next
MM = False i = 2 For Each c In Selection If Range(c.Address).MergeCells Then If MM = False Then c.Value = A(i) i = i - 1 MM = True End If Else c.Value = A(i) i = i - 1 MM = False End If Next
Vil det nemmeste ikke være at forebygge, at brugerne indtaster data de forkerte steder?
Jeg vil da foreslå, at du overveje at beskytte dine projektmapper, således at der kun kan indtastes i de celler, du frigiver. Det er den måde, jeg har løst problemet på. Og jeg har mange brugere, som laver input til eksempelvis månedlige budgetopfølgninger, og de har ikke mulighed for at indsætte data de forkerte steder.
Jo men dette er da beskyttede projektmapper men det er svært at undgå at brugerne skriver under den forkerte DATO (og man kan jo ikke skrivebeskytte ALT)
jamen du har da helt ret. De brugere er ret svære at styre *S*
Men dags dato kan faktisk også styres via datavalidering, hvis man "snyder" lidt. Sæt feltet til kun at acceptere en bestemt dato, og lav kontrollen på en celle, hvor du har indstatet formlen =IDAG().
Jeg kan også bedst lide b hansens forslag men med udgangspunkt i dit oprindelige spm. Prøv det her og se om det matcher, det du skal bruge. Kør først RedifineKeys (disabler normal cut/copy) Disse makroer ødelægger ikke oprindelig formatering.
Option Explicit Public TempCopy As Variant Public TempAddr As Range Public TempCutCopyMode As Boolean Public TempCutOrCopy As Boolean
Sub MyCopy() TempCopy = Selection Set TempAddr = Selection TempCutCopyMode = True TempCutOrCopy = True End Sub
Sub MyCut() TempCopy = Selection Set TempAddr = Selection TempCutCopyMode = True TempCutOrCopy = False End Sub
Sub MyPaste() If TempCutCopyMode = True Then On Error Resume Next Selection.Resize(UBound(TempCopy, 1), UBound(TempCopy, 2)) = TempCopy If Error <> 0 Then Selection = TempCopy Error.Clear End If If TempCutOrCopy = False Then TempAddr.ClearContents TempCutCopyMode = False End If End Sub
Sub EnableControl(Id As Integer, aktiv As Boolean) Dim CB As CommandBar Dim C As CommandBarControl On Error Resume Next For Each CB In Application.CommandBars Set C = CB.FindControl(Id:=Id, recursive:=True) If Not C Is Nothing Then C.enabled = aktiv Next End Sub
Det fungerer bare perfekt bak - du er da genial. Tak til jer alle. Point til kabbak og bak? -->bak mail mig lige din adresse - jeg skylder dig jo noget ;0)
eller 20:40 ? --> bak den laver lidt løjer med mig. Jeg har indsat RedefineKeys i Workbook_Open og Normalizekeys i Workbook_beforeclose. Koden er lagt i patient.xls der opstartes fra patientliste.xls. Men når jeg er tilbage i patientlisten genstarter patient.xls hvis jeg trykker ctrl + C /X - hvorfor nu det?
Vedr ovenstående "klage" fungerede det ikke ved placering i Workbook_Open og Workbook_beforeclose. Til gengæld fungerer det fint ved placering i sub der er lavet til at lukke projektmappen. God jul til jer alle!
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.