Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: Excel-taulukon muokkaus funktiossa

ari kood [07.01.2018 20:57:08]

#

Moi,

Kun ajan tämän VBA:ssa, sarakkeen leveys muuttuu kuten pitääkin:

Sub TestSub()

   Worksheets("Sheet2").Range("D5").ColumnWidth = 20

End Sub

Mutta jos lyön tämän funktion soluun, ei sarakkeen leveys muutu:

Function TestFunction()

   Worksheets("Sheet2").Range("D5").ColumnWidth = 20
   TestFunction = 1234

End Function

Eikä myöskään tällä:

Function TestFunction()

   Call TestSub
   TestFunction = 1234

End Function

Missä menen metsään? Miten saan muutettua sarakkeen leveyttä funktiolla?

Grez [07.01.2018 21:40:29]

#

ari kood kirjoitti:

Missä menen metsään?

Siinä, että yrität muokata taulukkoa funktiolla.

https://support.microsoft.com/en-us/help/170787/description-of-limitations-of-custom-functions-in-excel

ari kood kirjoitti:

Miten saan muutettua sarakkeen leveyttä funktiolla?

Et mitenkään

Microsoft kirjoitti:

The purpose of user-defined functions is to allow the user to create a custom function that is not included in the functions that ship with Microsoft Excel. The functions included in Microsoft Excel also cannot change the environment. Functions can perform a calculation that returns either a value or text to the cell that they are entered in. Any environmental changes should be made through the use of a Visual Basic subroutine.

ari kood [07.01.2018 22:44:20]

#

Ok, kiitos tiedosta!

Funktioni palauttaa soluun erimittaisia merkkijonoja jotka on rivitetty samaan soluun omille riveilleen.

Function XYZ() as string
   dim A(2) as string
   A(0) = "K-Market Karvia"
   A(1) = "S-Market Liminka"
   A(2) = "Parkanon Liha ja Läski"
   '
   dim result as string
   '
   '
   result = join(A,vbCrLf)

   XYZ = result
End Function

Miten saan säädettyä kyseisen sarakkeen leveyden merkkijonoille sopivaksi... siis tarvittavan leveyden saan kyllä itsekin jotenkin jostain, mutta se leveyden asettaminen?

Grez [08.01.2018 09:22:32]

#

ari kood kirjoitti:

Miten saan säädettyä kyseisen sarakkeen leveyden merkkijonoille sopivaksi...

No vaikka sarake C:

Columns("C:C").EntireColumn.AutoFit

Ei tosin toimi, jos sarakkeessa olevat tekstit on määritelty rivittymään.

ari kood [08.01.2018 09:28:31]

#

Okei, laitan tuon napin taakse.

Grez [08.01.2018 09:32:48]

#

Toi autofit muuten toimii ihan vakiona ilman nappejakin, kun vaan tuplaklikkaa ko. sarakkeen otsikon oikeaa reunaa.

Ei ehkä tän tapausken suhteen ole relevantti, mutta yleisenä Excelin käyttövinkkinä.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta