Just nu i M3-nätverket
Gå till innehåll

Sammanfoga texter från i VBA


Tommy H

Rekommendera Poster

Hej!

Jag vill sammanfoga texter så att det skapas en text typ "EK___025".

Detta sker då enligt :

/ActiveCell = Sheets("RULES").Range("D2") & "___" & counter2/

Problematiken är att få med "0" =nollan framför "25".

Det ska alltid vara 2st tecken "EK" (från Sheets("RULES").Range("D2")) följt av 3st "___" och slutligen 3st siffror (från counter 2)

Excel har tentendens att plocka bort den inledande nollan trots att jag försöker att formatera cellen som t.ex. text.

Hur typar jag att det alltid ska vara 3st siffror och om det bara är 2st så ska dom föregås av en nolla?

/TH

Länk till kommentar
Dela på andra webbplatser

Varför via VBA och inte med formler?

 

 

Jag testar att formatera cell B1 som text, skriva in 025, och köra

    Me.Range("c1") = Me.Range("a1") & "___" & Me.Range("b1")
 

och då blir resultatet det förväntade, i detta fallet "hej__025"

 

Du måste formatera en cell som text om vill ha en verklig nolla som inledning. Om du bara vill formatera med viss längd går även det men det är bara en formatering.

 

men men om du nu har ett tal i B1 och du vill ha ut ett som är exakt tre siffror långt:

    Me.Range("c1") = Me.Range("a1") & "___" & WorksheetFunction.Text(Me.Range("b1"), "000")
 

eller i formel

=A1 & Text(B1;"000")

Länk till kommentar
Dela på andra webbplatser

Varför via VBA och inte med formler?

 

 

Jag testar att formatera cell B1 som text, skriva in 025, och köra

    Me.Range("c1") = Me.Range("a1") & "___" & Me.Range("b1")

 

och då blir resultatet det förväntade, i detta fallet "hej__025"

 

Du måste formatera en cell som text om vill ha en verklig nolla som inledning. Om du bara vill formatera med viss längd går även det men det är bara en formatering.

 

men men om du nu har ett tal i B1 och du vill ha ut ett som är exakt tre siffror långt:

    Me.Range("c1") = Me.Range("a1") & "___" & WorksheetFunction.Text(Me.Range("b1"), "000")

 

eller i formel

=A1 & Text(B1;"000")

 

Nu ligger detta i samband med en massa kod redan, därav VBA...

kodsnutten:

    Me.Range("c1") = Me.Range("a1") & "___" & WorksheetFunction.Text(Me.Range("b1"), "000")

Fungerar utmärkt till första cellen, men problemet kommer ju sedan via "counter2.

räknaren är ju dum och utgår från "025´" i första formaterade värdet som i nästa skede blir

        ActiveCell = Sheets("RULES").Range("D2") & "___" & counter2 + 1

I detta läget så blir det ju 025 +1 = 26 osv.

Jag vill ju fortfarande ha 3st siffror här, alltså "026", "027" osv. (eller faktiskt kan det ju vara "001", "002", "003" också)

Det går väl knappast att formatera counter2 till att alltid innehålla 3st siffror?

Ska jag kanske låta räknaren lämna sitt värde i en unik cell och därifrån hämta mitt värde till koden stället?

Länk till kommentar
Dela på andra webbplatser

Me.Range("c1") = Me.Range("a1") & "___" & WorksheetFunction.Text(Me.Range("b1"+1), "000")

 

?

 

Om du ska räkna upp värdet.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...