# Zwei Variablen in eine Exelzelle mittels VBS



## gingele (21 April 2010)

Hallo Zusammen,

mal ne Frage. Kann ich in einem VBScript zwei Variablen in denen Zahlen Stehen in EINE Exelzelle schreiben und dazwischen ein Zeichen.

mein Bsp:

Excel.Cells(zeile, spalte).Value = var1 "/" var2

aber so funktionierts nicht. Hab Versucht ne Variable zu basteln die das beinhaltet und dann zu setzen, quasi als String, hat aber auch nicht funktioniert.


----------



## Larry Laffer (21 April 2010)

Hallo,
wie wäre es denn vielleicht so :
	
	



```
Excel.Cells(zeile, spalte).Value = cstr(var1) + "/" + cstr(var2)
```
... wobei ich jetzt mal unterstelle, dass du die Zuweisung für das Element "Excel" korrekt entsprechend des Beitrags in der FAQ zu dem Thema gemacht hast ...

Gruß
LL


----------



## pylades (21 April 2010)

Und hier die zugehörige FAQ:

http://www.sps-forum.de/showthread.php?t=15348

Evtl. wurde der Beitrag ja noch nicht gelesen 

Pylades


----------



## gingele (21 April 2010)

Hallo Larry, also also bei der Version cstr(var1) + "/" + cstr(var2) kommt bei mir in der Zeile auf einmal ein Datum???


----------



## pylades (21 April 2010)

gingele schrieb:


> Hallo Larry, also also bei der Version cstr(var1) + "/" + cstr(var2) kommt bei mir in der Zeile auf einmal ein Datum???



Dann formatiere die Zelle doch mal als Text.

Pylades


----------



## gingele (21 April 2010)

Auch bei der Version var1  & "/" & var2 (habe ich gerade im FAQ gesehen  pylades). Es handelt sich immer um den 5.April da var1 4 ist und var2 5. Wenn ich var2 verdopple erhalte ich den 10 April.


----------



## gingele (21 April 2010)

Hab ich auch schon probiert, ok liegt an der Formatierung aber dann kommt bei 10.April 40278


----------



## pylades (21 April 2010)

Kannst Du mal Dein Script posten?
Dann könnte ich hier mal damit testen.

Pylades


----------



## gingele (21 April 2010)

Das ist etwas schwierig, da es mehrer Files sind, die zum CAD Programm E3 gehören. Ich bau da nur was um, um eine andere Exeldarstellung erzeugen zu können. Aber es dreht sich nur um den Befehl

Excel.Cells(zeile, spalte).Value = var1 & "/" & var2


----------



## jabba (21 April 2010)

Probiers mal so.

```
Excel.Cells(zeile, spalte).Value = "="+cstr(var1) + "/" + cstr(var2)
```


----------



## gingele (21 April 2010)

Da macht er 0,8 draus bleibt jetzt aber in der Standartformatierung der Zelle.


----------



## Joe (21 April 2010)

Du kannst ja mit dem Makro auch deine Zellenformatierung ändern:


> Cells(3, 2).NumberFormat = "@"
> Cells(3, 2) = 5 & "/" & 4


----------



## gingele (21 April 2010)

Es funktioniert, vielen danke euch allen für die Hilfe.

Joe was mache ich jetzt mit dem Befehl genau, die Formatierung so ändern das er jedes Zeichen extra zulässt?


----------



## pylades (21 April 2010)

```
On Error resume next
 
Dim appExcel , fs , wbExcel , wsExcel
Dim Verzeichnis , Datei
Dim Zeile
'------------------------------------------------------------------------------
' Variablen-Zuweisungen ...
Verzeichnis = "c:\daten\"
Datei = "test.xls"
'------------------------------------------------------------------------------
' Pointer auf Tabelle laden
Set appExcel = CreateObject ("EXCEL.Application")
Set fs = CreateObject ("Scripting.FileSystemObject")
'------------------------------------------------------------------------------
' Objekte erzeugen
' prüfe ob datei existiert. wenn nicht erzeugen.
If Not fs.FileExists (Verzeichnis + Datei) Then
    appExcel.Workbooks.Add
    appExcel.ActiveWorkbook.SaveAs(Verzeichnis + Datei)
End If
 
Set wbExcel = appExcel.Workbooks.Open (Verzeichnis + Datei)
Set wsExcel = wbExcel.Worksheets("Tabelle1")
  
 
' Zelle beschreiben
wsExcel.Cells (1 , 1) = CStr(var1) + "/" + CStr(var2)
 
' Tabelle abspeichern
wbExcel.Close True 'false
appExcel.Quit ()
 
'------------------------------------------------------------------------------
' verwendeten Speicher wieder freigeben
Set wsExcel = Nothing
Set wbExcel = Nothing
Set fs = Nothing
Set appExcel = Nothing
Set Verzeichnis = Nothing
Set Datei = Nothing
```
var1 auf 4 und var2 auf 5 gesetzt
Zelle als Text formatiert
Nach ausführen des Scripts steht 4/5 in der Zelle A1

Pylades


----------



## Joe (21 April 2010)

Dein Problem ist ja, dass Excel die beiden durch einen Slash getrennten Zahlen als Datum erkennt (Amerikanische schreibweise von Datum).
Wenn du jetzt erst hergehst und die Zelle umformatierst auf TEXT (mit dem @)...

```
Excel.Cells(x, y).NumberFormat = "@"
```
... dann macht er kein Datum mehr draus. Dann kannst du da alles reinschreiben.

```
Excel.Cells(x, y) = var1 & "/" & var2
```


----------



## Oberchefe (21 April 2010)

Man kann im Excel eine Zelle als Text formatieren indem man ein Hochkomma voranstellt, dies wird von Excel in der Tabellenansicht auch nicht angezeigt. Demzufolge könnte das hier auch funktionieren (nicht getestet!):

```
Excel.Cells(zeile, spalte).Value = "'" + cstr(var1) + "/" + cstr(var2)
```


----------



## gingele (22 April 2010)

Habs gerade getestet, funktioniert auch.


----------

