emosbaek Skrevet 21. juni 2015 Skrevet 21. juni 2015 (endret) 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 21. juni 2015 av emosbek
ahw_ Skrevet 21. juni 2015 Skrevet 21. juni 2015 (endret) 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 21. juni 2015 av ahw_
emosbaek Skrevet 21. juni 2015 Forfatter Skrevet 21. juni 2015 Takk for svar. Men ser ikke ut til å fungere :/
ahw_ Skrevet 21. juni 2015 Skrevet 21. juni 2015 Tror du må forklare litt nærmere hva som indikerer at det ikke fungerer som du forventer. La oss ta det helt fra starten. Får du noen feilmeldinger?
emosbaek Skrevet 21. juni 2015 Forfatter Skrevet 21. juni 2015 Tror du må forklare litt nærmere hva som indikerer at det ikke fungerer som du forventer. La oss ta det helt fra starten. Får du noen feilmeldinger? Feilmeldingen sier 'Type mismatch'
ahw_ Skrevet 21. juni 2015 Skrevet 21. juni 2015 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?
emosbaek Skrevet 21. juni 2015 Forfatter Skrevet 21. juni 2015 (endret) 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 21. juni 2015 av emosbek
Harald Staff Skrevet 27. juni 2015 Skrevet 27. juni 2015 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
ahw_ Skrevet 27. juni 2015 Skrevet 27. juni 2015 Skal huske på å holde meg så langt unna VB/VBA/VBS osv. som overhodet mulig for å unngå slik selvpining.
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå