Gå til innhold

Legg til egen tekst i string


Anbefalte innlegg

Hei,

 

Ekstremt fersk i VBS og C# kodoing men forsøker å lære.

Har nå holdt på frem og tilbake i forsøk på å legge til egen tekst (som jeg tenker burde vært noe av det enkleste) i en eksisterende kode jeg har fått.

 

Dette er et script som jeg benytter i Excel for å lete igjennom tekst for så hente IPadressen til høyre i raden.

 

Men ønsker å legge til tekst foran IP'en jeg henter ut, men skjønner ikke hva jeg gjør galt.

Sub TB_Script()
    Dim x, xx, ProsessorIP, PanelIP, i As Long, StrRows1 As String, StrRows2 As String
    With [A1].CurrentRegion
        x = .Value
        xx = Application.Transpose(.Columns(3).Value)

        For i = LBound(xx) To UBound(xx)
            If Trim(Left(xx(i), 3)) = "RMC" Then
                StrRows1 = StrRows1 & i & Chr(32)
            ElseIf Trim(Left(xx(i), 3)) = "TSW" Then
                StrRows2 = StrRows2 & i & Chr(32)
            End If
        Next i
        

        ProsessorIP = Application.Index(x, Application.Transpose(Split(Trim(StrRows1))), 5)
        PanelIP = Application.Index(x, Application.Transpose(Split(Trim(StrRows2))), 5)

        With Sheets("Toolbox")
            .[L20].Resize(UBound(Split(StrRows1, Chr(32)))).Value = ProsessorIP
            .[L51].Resize(UBound(Split(StrRows2, Chr(32)))).Value = PanelIP
            .Select
        End With
    End With
End Sub

Her er hva jeg har forsøkt. (Teksten jeg prøver å sette inn er "TCP")

        With Sheets("Toolbox")
            .[L20].Resize(UBound(Split(StrRows1, Chr(32)))).Value = "TCP" & ProsessorIP
            .[L51].Resize(UBound(Split(StrRows2, Chr(32)))).Value = PanelIP
            .Select
        End With
        With Sheets("Toolbox")
            .[L20].Resize(UBound(Split(StrRows1, Chr(32))"TCP")).Value = ProsessorIP
            .[L51].Resize(UBound(Split(StrRows2, Chr(32)))).Value = PanelIP
            .Select
        End With
        With Sheets("Toolbox")
            .[L20].Resize(UBound(Split(StrRows1, Chr(32)))).Value = 'TCP' + ProsessorIP
            .[L51].Resize(UBound(Split(StrRows2, Chr(32)))).Value = PanelIP
            .Select
        End With
Endret av emosbek
Lenke til kommentar
Videoannonse
Annonse

Ikke at jeg har mye peiling på VB, men i hvert fall noe er klart. ProsessorIP er av typen Long, og du kan ikke bare blande dette sammen med String.

I stedet for...

"TCP" & ProsessorIP

Prøv noe som...

"TCP" & ProsessorIP.ToString()

.. Hvis det er .NET, eller hvis det ikke er .NET..

"TCP" & CStr(ProsessorIP)
Endret av ahw_
Lenke til kommentar

Er det 100% sikkert at du får den meldingen pga. endringen jeg foreslo, eller det du allerede har prøvd? Det fungerer altså helt fint uten endringene du har gjort?

 

Benytter jeg denne kommer feilmeldingen

        With Sheets("Toolbox")
            .[L20].Resize(UBound(Split(StrRows1, Chr(32)))).Value = "TCP" & CStr(ProsessorIP)
            .[L51].Resize(UBound(Split(StrRows2, Chr(32)))).Value = PanelIP
            .Select
        End With

Benytter jeg denne kommer det ikke noe melding og ting blir eksportert.

        With Sheets("Toolbox")
            .[L20].Resize(UBound(Split(StrRows1, Chr(32)))).Value = ProsessorIP
            .[L51].Resize(UBound(Split(StrRows2, Chr(32)))).Value = PanelIP
            .Select
        End With

Endret av emosbek
Lenke til kommentar

Hei

 

Når vi er inne i Excel koder vi i VBA. Ikke C#, ikke VBscript, ikke .NET.

 

Jeg klarer ikke helt dekode verken oppsettet eller koden. Men feilen er tydeligvis en mismatch mellom typer, og her kommer et VBA-fenomen:

 

Dim x, xx, ProsessorIP, PanelIP, i As Long

 

Long er et 32bits heltall i VBA. Og det er nærliggende å tro at vi har fem sånne her. Men nei, x, xx, ProsessorIP, PanelIP er Variant, mens det bare er bare i som er Long. Måten å deklarere er

 

Dim x As Long, xx As Long, ProsessorIP As Long, PanelIP As Long, i As Long

 

Variant i VB er "Pointers on stereiods" og kan dermed inneholde nesten hvasomhelst. En standard IP i formatet 222.222.222.222 vil være en String, ikke et heltall.

 

Beste hilsen Harald

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...