Macro Excel, Tekst naar kolommen

Pagina: 1
Acties:
  • 1.056 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

Anoniem: 7787

Topicstarter
Hallo daar!

Ik ben nu bezig met een macro te maken voor mijn excel sheet.

Het probleem is alleen als volgt:

In een cel staat de datum en tijd. Dmv 'tekst naar kolommen' ga ik deze scheiden.
De datum cel word: D-M-JJJJ
En de tijd cel blijft gewoon: UU:MM:SS

Als ik dit handmatig doe.. Is er geen probleem.
Nu wil ik het via een macro doen, en opeens treedt er een fout op bij dit stukje. Als ik dan doorga, staat de datum en tijd weliswaar wel apart.. Maar de kolom naast de tijd wordt overschreven met AM/ PM. En de tijd wordt geconverteerd naar de amerikaanse aanduiding. Dit wil ik niet, want hij schrijft nu een belangrijke kolom over.

(dit is natuurlijk aan te passen door een kolom toe te voegen en deze weer later laten verwijderen, maar dan heb ik nog steeds een probleem met de conversie.

Dit is het stukje VB:
code:
1
2
3
4
5
6
7
Columns("I:I").Select
    Selection.TextToColumns Destination:=Range("I1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1))
    Selection.NumberFormat = "m/d/yyyy"
    ActiveWindow.SmallScroll ToRight:=12


Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • x-force
  • Registratie: Maart 2001
  • Laatst online: 05-01-2024
Waarschijnlijk een hele domme opmerking: En als je de celeigenschappen goed zet? Het tabblad "number" geloof ik.

VangenopBetaalwater.nl Het platform om ervaringen over betaalwater in Frankrijk te delen met andere karpervissers zodat iedereen kan vangen op betaalwater!


Acties:
  • 0 Henk 'm!

  • Vaudtje
  • Registratie: April 2002
  • Niet online
Misschien werkt het als je van je selectie eerst het number format forceert?
code:
1
2
3
4
5
6
7
8
Columns("I:I").Select
    Selection.NumberFormat = "M/d/yyyy HH:mm:ss"
    Selection.TextToColumns Destination:=Range("I1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1))
    Selection.NumberFormat = "m/d/yyyy"
    ActiveWindow.SmallScroll ToRight:=12

edit:
Nee dus...

[ Voor 2% gewijzigd door Vaudtje op 17-04-2007 11:19 . Reden: zelf uitgeprobeerd ]

In deeze zin staan drie fauten


Acties:
  • 0 Henk 'm!

Anoniem: 7787

Topicstarter
Als ik de cel de eigenschap nummer geef, dan krijg ik ipv tijd, komma-getallen.
Als ik de cel van te voren naar: UU:MM:SS zet, dan converteert hij het alsnog naar amerikaanse tijd + overschrijft hij nog steeds de kolom ernaast met Pm/AM. :(

Acties:
  • 0 Henk 'm!

  • Vaudtje
  • Registratie: April 2002
  • Niet online
Kun je anders niet gewoon de datumwaarde kopieren naar de bestemmingskolommen en er daar een format op zetten? Dus d-m-yyy voor de ene kolom en H:mm:ss voor de andere?

Alternatief: negeer de AM/PM kolom bij het importeren (dmv extra Array):
code:
1
2
3
4
    Selection.TextToColumns Destination:=Range("I1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 9))

[ Voor 53% gewijzigd door Vaudtje op 17-04-2007 11:28 ]

In deeze zin staan drie fauten


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 12:59

Creepy

Tactical Espionage Splatterer

Excel \o/
Dat hoort stiekum in Officesuites en -software dus ik verplaats je topic die kant op.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Vaudtje
  • Registratie: April 2002
  • Niet online
Negeren van kolom is misschien niet echt briljant, want dat werkt vast niet meer als je PC op een andere datum/tijdinstelling staat waarschijnlijk

[ Voor 73% gewijzigd door Vaudtje op 17-04-2007 11:33 ]

In deeze zin staan drie fauten


Acties:
  • 0 Henk 'm!

Anoniem: 7787

Topicstarter
Jeujj, nu werkt het beter!!

Dit is voor het eerst dat ik met een macro werk, dus hoe dat precies zit met die arrays.. I dunno..
Maar dit werkte wel, Geen Am/PM, Geen fouten meer met "wil je de niet lege cellen overschrijven"

Maar wel nog steeds de conversie van de tijd.
Ik snap niet dat die niet gewoon dat spul als tekst kan behandelen, want dan zou die toch gewoon datgene moeten overnemen wat er al staat? ipv het te converteren naar een tijd format?

Acties:
  • 0 Henk 'm!

Anoniem: 7787

Topicstarter
Ik heb nog op internet gezocht en ik zag ook iemand die hier problemen mee had:

Hij kwam met een code als:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Range("a1:a2").EntireRow.Delete 
 
Columns("h:j").Insert Shift:=xlToRight 
Columns("h:j").NumberFormat = "General" 
Columns("g:g").TextToColumns Destination:=Range("H1"), DataType:=xlDelimited, _ 
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _ 
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _ 
:=":", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 2)) 
 
FinalRow = Range("A65536").End(xlUp).Row 
For r = 1 To FinalRow 
     ' don't want 12 PM to be 24
    If Right(Range("j" & r).Value, 2) = "PM" And Range("h" & r).Value <> 12 Then 
        Range("h" & r).Value = Range("h" & r).Value + 12 
    End If 
     ' 12 AM should be zero
    If Right(Range("j" & r).Value, 2) = "AM" And Range("h" & r).Value = 12 Then 
        Range("h" & r).Value = Range("h" & r).Value - 12 
    End If 
     
Next r 
Columns("j:j").Delete 
Columns("g:g").Delete


Maar ik begrijp er niet zoveel van.. Waarom werkt dat 'K programma niet gewoon met 24H tijdsaanduiding?!
Pagina: 1