Announcement

Collapse
No announcement yet.

Zuweisung des Wertes einer Exceldatei

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zuweisung des Wertes einer Exceldatei

    Hallo zusammen,

    wenn ich einer Stringvariablen einen Wert einer Excelzelle, in der nichts steht, so zuweise:

    x = exWB.Worksheets("tabelle1").Range("ai" & 100).Value

    klappt das.

    Wenn ich den Zellenwert aber so wissen will und entsprechend reagieren:

    Select Case String.Format(exWB.Worksheets("tabelle1").Range("A I" & i).Value)
    Case ""
    daten.wicht_E = "N"
    Case "1"
    daten.wicht_E = "J"
    Case Is <> "" And "1"
    MsgBox("Fehler in Exceldatei", "in Spalte AI ab Zeile 100 steht falsche Zeichen")


    oder auf diese Weise ein Element einer Liste hinzufügen möchte.:

    daten.PSA_E = String.Format(exWB.Worksheets("tabelle1").Range("A I" & i).Value)

    End Select
    dann kommt die Fehlermeldung:
    "Der Wert darf nicht Null sein"
    Ich habe zwar eine Lösung mit TRY -CATCH, die scheint mir aber zu aufwendig.

    Kennt einer eine bessere Lösung?

    vG

    fredyx

  • #2
    Es gibt einen billigen Trick, nicht unbedingt schön, aber funktioniert.

    Einfach an das .value & "" anhängen, dann ist alles was kommt 1. ein String und 2. mind. "" aber nie NULL.

    Gruß Womble

    Comment


    • #3
      Hallo Womble,

      genial, wie kommt man auf sowas?

      Aber warum ist das nicht schön? Gibt es da irgendwann nachteilige Konsequenzen?

      Danke

      fredyx

      Comment


      • #4
        Hi fredyx,

        darauf gekommen bin ich nicht, das stand irgendwo in einer der Onlinehilfen zu einem Problem das ich mal hatte. Das durch den & "" eine implizite Konvertierung in einen String stattfindet und das Ergebnis immer mind. "" ist und nie NULL.

        nicht schön, weil Du dann ja nicht auf den kommenden Datentyp eingehst, sondern ihn zum String prügelst, unabhängig davon was eigentlich gekommen ist.

        Nachteilige Konsequenzen? Nur wenn etwas kommt was sich nicht in einen String umwandeln lässt - sollte eigentlich nicht vorkommen - aber etwas das nach der Konvertierung in einen String nicht mehr den Inhalt hat den es mal hatte, z.B. ein Objekt.

        Gruß Womble
        P.S. Sorry für die späte Antwort, ich war auf div. Schulungen

        Comment


        • #5
          wieso nicht einfacht mit CType (sauberere Lösung und wartbarer)

          Comment


          • #6
            Hallo levu,

            [highlight=vb.net]
            TextBox1.Text = CType(exWB.Worksheets.Item(1), Excel.Worksheet)
            TextBox1.Text = CType(exWB.Worksheets.Item("tabelle1"), Excel.Worksheet)
            TextBox1.Text = CType(String.Format(exWB.Worksheets.Item("tabelle1 "), Excel.Worksheet))

            TextBox2.Text = String.Format(exWB.Worksheets("tabelle1").Range("C 2").Value & " ")[/highlight]

            Die ersten 3 Versionen funktionieren nicht, während die letzte Zeile Klappt!!
            Es kommt immer die Fehlermeldung:

            "Das COM-Objekt des Typs "System.__ComObject" kann nicht in den Klassentyp "System.String" umgewandelt werden. Instanzen von Typen, die COM-Komponenten repräsentieren, können nicht in andere Typen umgewandelt werden, die keine COM-Komponenten repräsentieren. Eine Umwandlung in Schnittstellen ist jedoch möglich, sofern die zugrunde liegende COM-Komponente QueryInterface-Aufrufe für die IID der Schnittstelle unterstützt."


            Wie muss es denn Deiner Meinung nach lauten??

            vG

            fredyx
            Zuletzt editiert von fredyx; 22.10.2008, 21:02.

            Comment


            • #7
              Hi fredyx,

              Code:
              TextBox2.Text = CType(exWB.Worksheets("tabelle1").Range("C2").Value, String)
              müsste eigentlich funktionieren.

              Gruß Womble

              Comment


              • #8
                Hallo Womble,

                danke, dass Du noch mal nachgehakt hast. Ja, so klappt's!

                Es zeigt sich mir nur ein Unterschied:

                Bei der 1. Variante steht nachher in Text das ""

                [highlight=vb.net]
                Text = String.Format(exWB.Worksheets(1).Range("A1").Value & " ")[/highlight]

                Bei Deiner Variante steht in Text NOTHING

                [highlight=vb.net]
                Text = CType(exWB.Worksheets("PSA").Range("A1").Value, String)[/highlight]

                Was dieser Unterschied aber für Folgen hat weiß ich noch nicht.

                vG

                fredyx

                Comment

                Working...
                X