Pozdravljeni!
Bi mi lahko kdo prosim pomagal in opisal kodo v VBA excel. Zakaj je kaj?
Sub ChemFormat()
Dim c
Dim PrevNum
Dim s
PrevNum = 1
s = ActiveCell.Value
For c = 1 To Len(s)
If IsNumeric(Mid(s, c, 1)) And PrevNum <> 1 Then
ActiveCell.Characters(c, 1).Font.Subscript = True
PrevNum = 1
Else
PrevNum = 0
Count = Count + 1
End If
Next c
End Sub
Hvala.
VBA pomoč- razlaga makrov
VBA pomoč- razlaga makrov
Zadnjič spremenil pelako, dne To Sep 13, 2016 11:52 am, skupaj popravljeno 1 krat.
Re: VBA pomoč
Pozdravljeni,
Vi torej želite razlago, kaj in kako makro deluje?
PS: Naslov tematike prosim izberite bolj opisen, "VBA pomoč" ne pove ravno dosti.
Vi torej želite razlago, kaj in kako makro deluje?
PS: Naslov tematike prosim izberite bolj opisen, "VBA pomoč" ne pove ravno dosti.
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator
Re: VBA pomoč
Ja razlago makrov kako delujejo. bom popravila naslov
Re: VBA pomoč- razlaga makrov
Dobro, tega vam lahko razložim, čeravno ne razumem, čemu vam bo razlaga služile?
Torej:
Torej:
Koda: Izberi vse
Sub ChemFormat()
' deklaracija spremenljiv
Dim c
Dim PrevNum
Dim s
Dim Count ' to vam Manjka (!)
' predpostavimo, da je prejšnja črka pravzaprav cifra
PrevNum = 1
' preberemo vsebimo trenutne celice
s = ActiveCell.Value
' v zanki pregledamo vsak znak v vsebini trenutne celice
For c = 1 To Len(s)
' v kolikor je trenutni znak cifra, prejšnji znak pa ni bil cifra potem ga podpišemo
If IsNumeric(Mid(s, c, 1)) And PrevNum <> 1 Then
' podpišemo cifro
ActiveCell.Characters(c, 1).Font.Subscript = True
' označimo, da je cifra
PrevNum = 1
Else
' označimo, da ni šlo za podpisano cifro
PrevNum = 0
' povečamo števec, kar je pravzaprav povsem brezveze, saj tega ne uporabimo drugje
Count = Count + 1
End If
Next c
End Sub
[code]
Funkcija naj bi torej urejala kemijske enačbe, saj podpisuje cifre. Vendar kolikor se jaz spoznam na kemijo so lahko cifre tudi večje od 9, kar pomeni, da ta funkcija ne deluje povsem pravilno za vse kemijske enačbe
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator
Re: VBA pomoč- razlaga makrov
Hvala lepa.
Nekaj pri diplomi rabim in morem razložiti. Vas lahko prosim, če bi mi še en primer razložili. gre za Redlich-Kwongova enačbo stanja:
Option Explicit
Type ChemData
Compound As String * 15
Tc As Double
Pc As Double
End Type
Sub RecordTest()
Dim Chem(20) As ChemData
Dim i As Integer
Dim T As Double, V As Double
Dim Pideal As Double, Prk As Double
Dim a As Double, b As Double
Const R As Double = 0.08205 'gas constant
Range("a3").Select
For i = 1 To 4
Chem(i).Compound = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
Chem(i).Tc = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
Chem(i).Pc = ActiveCell.Value
ActiveCell.Offset(1, -2).Select
Next i
T = InputBox("Temperature (K) = ")
V = InputBox("Volume (L) = ")
Pideal = R * T / V
Range("d3").Select
For i = 1 To 4
a = 0.4278 * R ^ 2 * Chem(i).Tc ^ 2.5 / Chem(i).Pc
b = 0.0867 * R * Chem(i).Tc / Chem(i).Pc
Prk = R * T / (V - b) - a / (Sqr(T) * V * (V + b))
ActiveCell.Value = Pideal
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Prk
ActiveCell.Offset(1, -1).Select
Next i
End Sub
Nekaj pri diplomi rabim in morem razložiti. Vas lahko prosim, če bi mi še en primer razložili. gre za Redlich-Kwongova enačbo stanja:
Option Explicit
Type ChemData
Compound As String * 15
Tc As Double
Pc As Double
End Type
Sub RecordTest()
Dim Chem(20) As ChemData
Dim i As Integer
Dim T As Double, V As Double
Dim Pideal As Double, Prk As Double
Dim a As Double, b As Double
Const R As Double = 0.08205 'gas constant
Range("a3").Select
For i = 1 To 4
Chem(i).Compound = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
Chem(i).Tc = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
Chem(i).Pc = ActiveCell.Value
ActiveCell.Offset(1, -2).Select
Next i
T = InputBox("Temperature (K) = ")
V = InputBox("Volume (L) = ")
Pideal = R * T / V
Range("d3").Select
For i = 1 To 4
a = 0.4278 * R ^ 2 * Chem(i).Tc ^ 2.5 / Chem(i).Pc
b = 0.0867 * R * Chem(i).Tc / Chem(i).Pc
Prk = R * T / (V - b) - a / (Sqr(T) * V * (V + b))
ActiveCell.Value = Pideal
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Prk
ActiveCell.Offset(1, -1).Select
Next i
End Sub
Re: VBA pomoč- razlaga makrov
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator
Re: VBA pomoč- razlaga makrov
Potem pa prosim ja