Microsoft Excel

Herbers Excel/VBA-Archiv

Wochenprobleme

Betrifft: Wochenprobleme von: Micha
Geschrieben am: 21.08.2004 15:42:30

Hallo!
Ich hatte diese Woche 3 Probs mit Excel, vielleicht könnt ihr mir helfen.

ich habe ein Problem mit Functions:

Function abc()
Cells(1,1)="Hallo"
End Function


in Zelle A2 steht Wenn(A3=1;abc();"")

1. wieso wird die
Function nicht ausgeführt, bzw wird sie ausgeführt aber 
es wird nicht "Hallo" geschrieben(!?)
2. Müssen Functions immer in einem Modul stehen?
-------------------------------------------------------
3. Wie kann man von einer 
Sub ein ganzes Feld einer anderen 
Sub übergeben?

Sub Eins()
for i=1 to 10
A(i)=Cells(i,1)
next
call zwei A(i) '???
End Sub


Sub Zwei(A(i))
for i=1 to 10
Cells(1+i,1)=A(i)
End Sub


-------------------------------------------------------------


Ich habe auch noch ein select Problem:

For i = 1 To 19000
fehler = False
Tabname = Feld(i, 0) 'Feld(i,0) enthält immer einen Sheetnamen(häufig derselbe)

If Left(Tabname, 1) = "6" Then
Sheets(Tabname).Select 'Hier kommt Überlauf fehler!! Warum?
ElseIf Left(Tabname, 1) = "5" Then
Sheets(Tabname & " Data").Select
Else
fehler = True
End If

If fehler = False Then
For ii = 0 To 8
Cells(i + 15, ii + 1) = Feld(i, ii)
Next
End If

Next

Danke im voraus!
  


Betrifft: AW: Wochenprobleme von: Matthias G
Geschrieben am: 21.08.2004 16:07:08

Hallo Micha,

zu 1:
in einer Funktion können keine Zellen verändert werden, das ist so.

zu 2:
wenn du sie in einer Formel aufrufen willst, ja.

zu 3:
z.B. so:
Sub Eins()
Dim A(10)
For i = 1 To 10
A(i) = 10 + i
Next
Zwei A
End Sub

Sub Zwei(A)
For i = 1 To 10
Cells(1 + i, 1) = A(i)
Next
End Sub
Gruß Matthias


  


Betrifft: AW: Wochenprobleme von: micha
Geschrieben am: 22.08.2004 15:19:54

Hallo + Danke für die Hilfe!
Es klappt prima! Hast du noch eine Idee warum das hier nicht funtioniert?:


For i = 1 To 19000

fehler = False

Tabname = Feld(i, 0) 'Feld(i,0) enthält immer einen Sheetnamen(häufig derselbe)



If Left(Tabname, 1) = "6" Then

Sheets(Tabname).Select'Hier kommt Überlauf fehler!! Warum?

ElseIf Left(Tabname, 1) = "5" Then

Sheets(Tabname & " Data").Select

Else

fehler = True

End If



If fehler = False Then

For ii = 0 To 8

Cells(i + 15, ii + 1) = Feld(i, ii)

Next

End If



Next


  


Betrifft: AW: Wochenprobleme von: Matthias G
Geschrieben am: 22.08.2004 16:03:01

Hallo Micha,

Definiere mal die Variablen,

also
Dim Tabname as String
usw.

Wenn's immer noch nicht geht, schick mal die ganze Prozedur, so in Stücken lässt sich das schlecht prüfen.
Vor allem interessiert mich, wie du das Array "Feld" füllst.

Gruß Matthias


  


Betrifft: AW: Wochenprobleme von: micha
Geschrieben am: 22.08.2004 16:47:18

Oh, eben hats geklappt :-)
so gings:CStr(Tabname) ' war vorher Variant eigentlich doch größer(?) als Stringtyp.
Ändert der Compiler eine Variant-Variable z.B. zu Integer um wenn eine Zahl eingelesen wurde und kein Text?

Gruß
Micha


  


Betrifft: AW: Wochenprobleme von: Matthias G
Geschrieben am: 22.08.2004 21:02:59

Hallo Micha,

ich habe kein theoretisches Wissen dazu, aber meine Erfahrung zeigt, dass einmal zugeordnete Variant-Variablen dann einen Typ besitzen, der nicht mehr zu allen Ausdrücken kompatibel ist.
Wie auch immer, jetzt scheint es ja zu funktionieren :-)

Gruß Matthias


  


Betrifft: AW: Wochenprobleme von: micha
Geschrieben am: 22.08.2004 16:47:41

Oh, eben hats geklappt :-)
so gings:CStr(Tabname) ' war vorher Variant eigentlich doch größer(?) als Stringtyp.
Ändert der Compiler eine Variant-Variable z.B. zu Integer um wenn eine Zahl eingelesen wurde und kein Text?

Gruß
Micha


  


Betrifft: AW: Wochenprobleme von: micha
Geschrieben am: 22.08.2004 16:49:52

Oh, eben hats geklappt :-)
so gings:CStr(Tabname) ' war vorher Variant eigentlich doch größer(?) als Stringtyp.
Ändert der Compiler eine Variant-Variable z.B. zu Integer um wenn eine Zahl eingelesen wurde und kein Text?

Gruß
Micha


  


Betrifft: AW: Wochenprobleme von: micha
Geschrieben am: 22.08.2004 16:49:58

Oh, eben hats geklappt :-)
so gings:CStr(Tabname) ' war vorher Variant eigentlich doch größer(?) als Stringtyp.
Ändert der Compiler eine Variant-Variable z.B. zu Integer um wenn eine Zahl eingelesen wurde und kein Text?

Gruß
Micha


  


Betrifft: AW: Wochenprobleme von: micha
Geschrieben am: 22.08.2004 16:50:12

Oh, eben hats geklappt :-)
so gings:CStr(Tabname) ' war vorher Variant eigentlich doch größer(?) als Stringtyp.
Ändert der Compiler eine Variant-Variable z.B. zu Integer um wenn eine Zahl eingelesen wurde und kein Text?

Gruß
Micha


  


Betrifft: AW: Wochenprobleme von: micha
Geschrieben am: 22.08.2004 16:50:16

Oh, eben hats geklappt :-)
so gings:CStr(Tabname) ' war vorher Variant eigentlich doch größer(?) als Stringtyp.
Ändert der Compiler eine Variant-Variable z.B. zu Integer um wenn eine Zahl eingelesen wurde und kein Text?

Gruß
Micha


  


Betrifft: AW: Wochenprobleme von: micha
Geschrieben am: 22.08.2004 16:50:24

Oh, eben hats geklappt :-)
so gings:CStr(Tabname) ' war vorher Variant eigentlich doch größer(?) als Stringtyp.
Ändert der Compiler eine Variant-Variable z.B. zu Integer um wenn eine Zahl eingelesen wurde und kein Text?

Gruß
Micha


  


Betrifft: Hoppla hab wohl öfters auf den Button gedrückt. von: micha
Geschrieben am: 22.08.2004 16:52:20

da hat aber nix geladen...Sorry


  


Betrifft: kommt vor :-) - oT von: Matthias G
Geschrieben am: 22.08.2004 21:03:49

ot