Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
488to492
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
488to492
488to492
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Typen unverträglich

Typen unverträglich
21.09.2004 12:30:17
Nicole
Hat jemand ne Idee, was in Zeile 4 falsch ist?
Ich krieg immer einen Laufzeitfehler 13, Typen unverträglich.......und kann damit nicht so viel anfangen.....
Viele Grüsse Nicole

Sub Leerzeilen_loeschen()
1 Dim j As Integer
2 Application.ScreenUpdating = False
3 For j = (i - 1) * 140 + 120 To 2 Step -1
4 If Cells(j, 1).Value = "" Or Cells(j, 2).Value = "" Then _
5 Cells(j, 1).EntireRow.Delete
6 Next j
7 Application.ScreenUpdating = True
End Sub

23
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Typen unverträglich
Dr.
Schau Dir mal den Wert der Laufvariable j in Verbindung mit der Cells-Eigenschaft an. ;-)
AW: Typen unverträglich
Ulf
Was wollst du abfragen, ob die Zelle leer ist oder keinen Wert enthält?

Sub Leerzeilen_loeschen()
1 Dim j As Long
2 Application.ScreenUpdating = False
3 For j = (i - 1) * 140 + 120 To 2 Step -1
4 If Cells(j, 1)= "" Or Cells(j, 2)= "" Then _
5 Cells(j, 1).EntireRow.Delete
6 Next j
7 Application.ScreenUpdating = True
Ulf
End Sub

und dann noch...
Ulf
Die Variable i ist nicht deklariert und hat wohl auch keinen Wert.
Ulf
AW: Typen unverträglich
21.09.2004 12:41:34
Nicole
Habe selbt mit:
Dim j As Double oder Dim j As Long
in Zeile 4 eine Typenunverträglichkeit.
(i ist ausserhalb des subs definiert)
Habt ihr weiter Ideen? ich bin mit meinem Latein am Ende.....
Anzeige
AW: Typen unverträglich
21.09.2004 12:49:01
mar.s
hallo,
vor cells(j,1) sollte doch das Worksheet stehen
worksheet("Tabelle1").Cells(j,1)
Mar.S
AW: Typen unverträglich
21.09.2004 12:52:33
Nicole
Hello Mar.S
Das richtige sheet habe ich ebenfalls schon ausserhalb des Subs aktiviert.
Aber bin froh über jeden weitern Tipp!
LG
AW: Typen unverträglich
Piet
Lad das Teil mal hoch.
Piet
AW: Typen unverträglich
21.09.2004 13:01:29
mar.s
hallo nicole,
wie und wo hast du i bzw. j deklariert? Im selben Modul als Dim- oder als Private-Variable?
Sind die Variablen auf Projekt- (Public), auf Modul- oder Prozedurebene deklariert?
D. h., kann dein Sub überhaupt auf die Variable zugreifen?
Wenn du z.B. j in Modul1 mit Dim ... deklariert ist, kann j nicht ins Modul2 übergeben werden.
Gruß Mar.S
Anzeige
AW: Typen unverträglich
21.09.2004 13:44:27
Nicole
Hallo zusammen!
Hier wär also mein Code.....
Dim Mein_Export As String
Dim Mein_Export1 As String
Dim Meine_Datei As String
Dim Mein_Pfad As String
Dim Mein_Blatt As String
Dim max As Integer
Dim Antwort As String
Dim i As Integer

Sub ESAComp()
'Dateiname_ausgeben()
Meine_Datei = InputBox("Bitte geben sie den Dateinamen (ohne Endung) der zu verarbeitenden Excel Datei an. Sie muss bereits geöffnet sein.", "Dateieingabe")
Meine_Datei = Meine_Datei & ".xls"
'Tabellenblaetter_zählen()
Windows(Meine_Datei).Activate
max = Worksheets.Count
'Makroname_ausgeben()
Mein_Export = InputBox("Name der Textdatei (ohne Endung) .", "Dateieingabe")
Mein_Export1 = Mein_Export & ".xls"
'Excel Datei mit dem Namen Mein_Export und einem Sheet erstellen
Workbooks.Add
Mein_Pfad = ThisWorkbook.Path
ActiveWorkbook.SaveAs Filename:=Mein_Pfad & "\" & Mein_Export1
ActiveWorkbook.Save
For i = 2 To max
'Quell Tabellenblatt auswählen()
Windows(Meine_Datei).Activate
Mein_Blatt = Worksheets(i).Name
Worksheets(i).Activate
Range("A1").Select
phys = ActiveCell.Value
Select Case phys
Case Is = "REINFORCED PLY"
Call Riinforsd_pläi
Case Is = "HOMOGENEOUS PLY"
Call Homogeneous_Ply
Case Is = "ADHESIVE"
Call Adhesive
Case Is = "CORE PLY, HONEYCOMB"
Call CorePlyhoneycomb
Case Is = "CORE PLY, HOMOGENEOUS"
Call CorePlyHomogeneous
End Select
Next i
Windows(Mein_Export1).Activate
Call Leerzeilen_loeschen
'Call gaga
Call Abstandszeile_einfügen
Call Sterne_einfügen
Call Applicability
Call Spalten_verschieben
Call Textfile
'Call Schliessen_xls
Call Loeschen_xls
Windows("Makro_ESAComp_Datenbank.xls").Activate
End Sub


Sub Leerzeilen_loeschen()
Dim j As Double
Application.ScreenUpdating = False
For j = (i - 1) * 140 + 120 To 2 Step -1
If Cells(j, 1).Value = "" Or Cells(j, 2).Value = "" Then _
Cells(j, 1).EntireRow.Delete
Next j
Application.ScreenUpdating = True
End Sub


Sub Abstandszeile_einfügen()
Dim k As Integer
For k = 1 To Range("A65536").End(xlUp).Row
If Range("A" & k).Value = "Other data = " Or Range("A" & k).Value = "name = " Then
Rows(k + 1).Insert
Range(Cells(k + 1, 1).Address).Select
ActiveCell.FormulaR1C1 = "#---------------------------------------------------------------------------------"
End If
Next k
Range("A1").Select
ActiveCell.FormulaR1C1 = "#---------------------------------------------------------------------------------"
End Sub


Sub Sterne_einfügen()
Dim l As Integer
Dim l2 As Integer
For l = 1 To Range("A65536").End(xlUp).Row
If Range("A" & l).Value = "Manufacturer = " Then
For l2 = l To Range("A65536").End(xlUp).Row
Range("A" & l2).Value = "#" & Range("A" & l2).Value
If Range("A" & l2).Value = "#Other data = " Then Exit For
Next l2
End If
Next l
End Sub


Sub Applicability()
Windows(Mein_Export1).Activate
Range("G80").Select
ActiveCell.FormulaR1C1 = "=RC[-6]:R[7]C[-6]&RC[-5]:R[7]C[-5]&RC[-4]:R[7]C[-4]&RC[-3]:R[7]C[-3]&RC[-2]:R[7]C[-2]&RC[-1]:R[7]C[-1]"
Range("G80").Select
End Sub


Sub Spalten_verschieben()
Windows(Mein_Export1).Activate
Range("C1").Select
ActiveCell.FormulaR1C1 = "=RC[-2]:R[3]C[-2]&RC[-1]:R[3]C[-1]"
Range("C1").Select
Selection.AutoFill Destination:=Range("C1:C1000"), Type:=xlFillDefault
Range("C1:C1000").Select
Selection.Copy
Range("D1:D1000").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("D1:D1000").Select
Application.CutCopyMode = False
Selection.Copy
Range("A1:A1000").Select
ActiveSheet.Paste
Range("B1:D1000").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
End Sub


Sub Textfile()
Windows(Mein_Export1).Activate
Mein_Export = Mein_Export & ".txt"
ChDir Mein_Pfad
ActiveWorkbook.SaveAs Filename:= _
Mein_Pfad & "\" & Mein_Export, FileFormat:=xlTextPrinter, _
CreateBackup:=False
Windows("Makro_ESAComp_Datenbank.xls").Activate
Range("A13").Select
ActiveCell.FormulaR1C1 = "Bitte öffnen sie die zu verarbeitende Datei! "
Range("A24").Select
ActiveCell.FormulaR1C1 = "Die Textdatei befindet sich in: "
Range("A26").Select
ActiveCell.FormulaR1C1 = Mein_Pfad & "\" & Mein_Export
ActiveWindow.WindowState = xlNormal
ActiveWindow.WindowState = xlNormal
Range("A26").Select
With Selection.Font
.Name = "Arial"
.Size = 12
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
Selection.Font.Bold = True
Range("A13").Select
With Selection.Font
.Name = "Arial"
.Size = 12
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
Selection.Font.Bold = True
End Sub

Anzeige
AW: Typen unverträglich
Dr.
As I told before: i besitzt anfangs den Wert null und negative Parameter verträgt die Cells-Eigenschaft nicht.
AW: Typen unverträglich
21.09.2004 13:59:15
Nicole
ok, verstehe, aber kannst du mir mit dem Code helfen?
Wenn ich für i eine Schleife mache funktionierts leider immer noch nicht....

Sub Leerzeilen_loeschen()
Dim j As Double
Dim i As Integer
Application.ScreenUpdating = False
For i=2 To max
For j = (i - 1) * 140 + 120 To 2 Step -1
If Cells(j, 1).Value = "" Or Cells(j, 2).Value = "" Then _
Cells(j, 1).EntireRow.Delete
Next j
Next i
Application.ScreenUpdating = True
End Sub

AW: Typen unverträglich
EtopHG
Hallo Nicole,
Wenn Dein Code auf eine Zelle trifft in der WERT# oder NV# oder eine ähnliche Excelmeldung drin steht, kannst Du sie nicht mehr mit string ("") vergleichen.
Ändere die Zeile in
If IsEmpty(Cells(J, 1).Value) Or IsEmpty(Cells(J, 2).Value) Then _
Cells(J, 1).EntireRow.Delete
und es sollte funktionieren.
Gruss Hansueli
Anzeige
AW: Typen unverträglich
EtoPHG
Hallo Nicole,
Hallo Nicole,
Wenn Dein Code auf eine Zelle trifft in der WERT# oder NV# oder eine ähnliche Excelmeldung drin steht, kannst Du sie nicht mehr mit string ("") vergleichen, d.h. Du bekommst dann genau die Fehlermeldung.
Ändere die Zeile 4 in
If IsEmpty(Cells(J, 1).Value) Or IsEmpty(Cells(J, 2).Value) Then _
Cells(J, 1).EntireRow.Delete
und es sollte funktionieren.
Gruss Hansueli
AW: Typen unverträglich
21.09.2004 14:21:33
Nicole
Hallo EtoPHG
Ich habs mit deinem Tipp versucht, aber es funktioniert immer noch nicht.
Zeilen löschen bei welchen die erste Zelle leer ist geht mit diesem Code einwandfrei.
Dim j As Double
Application.ScreenUpdating = False
For j = (i - 1) * 140 + 120 To 2 Step -1
If Cells(j, 1).Value = "" Then _
Cells(j, 1).EntireRow.Delete
Next j
Application.ScreenUpdating = True

Aber wie lösche ich Zeilen, wenn die zweite Zelle leer ist?
Bin bald am verzweifeln......
Anzeige
AW: Typen unverträglich
EtoPHG
Nicole,
Was heisst es geht nicht, kommt immer noch Typen unverträglich ?
Oder was?
Wenn ja Debug mal, bei welcher Zeile (j) das passiert und sag mir, was in der 1. und 2. Spalte dieser Zeile steht.
Gruss Hansueli
AW: Typen unverträglich
21.09.2004 14:42:06
Nicole
Also der Compiler macht seine Arbeit gut, d.h. es gibt keine Fehlermeldung. Aber es passiert nicht das was ich möchte!
Bsp: S = 6
X = no
R =
Q = yes
Jetzt sollte die Zeile mit R = ebenfalls noch gelöscht werden, dann wäre ich happy!
Hier mein momentaner Code:

Sub Leerzeilen_loeschen()
Dim j As Double
Dim i As Integer
For i = 2 To max
Application.ScreenUpdating = False
For j = (i - 1) * 140 + 120 To 2 Step -1
If IsEmpty(Cells(j, 1).Value) Or IsEmpty(Cells(j, 2).Value) Then _
Cells(j, 1).EntireRow.Delete
Next j
Next i
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Typen unverträglich
21.09.2004 15:02:06
Ingolf
Hallo Nicole,
ich nehme an, die Einträge für S, X, R und Q stehen in den Spalten A bis D des Arbeitsblattes. Das Makro prüft aber nur die Spalten A und B auf leere Zellen. Für 4 Spalten mußt du die "If IsEmpty"-Programmzeile folgendermassen ergänzen:
If IsEmpty(Cells(j, 1).Value) Or IsEmpty(Cells(j, 2).Value) _
Or IsEmpty(Cells(j, 3).Value) Or IsEmpty(Cells(j, 4).Value) Then _
Cells(j, 1).EntireRow.Delete
Gruß Ingolf
AW: Typen unverträglich
21.09.2004 15:11:21
Nicole
Ne ne, es müssen schon nur die Spalten 1 und 2 getestet werden!
S=, X=, R= und Q= stehen in Spalte A und die Zahlen/Wörter stehen in Spalte B.
Verstehe langsam die Welt nicht mehr......
Anzeige
AW: Typen unverträglich
EtoPHG
Hallo Nicole,
Verbesserte Version des Befehls auf Zeile 4 und 5
If (IsEmpty(Cells(j, 1).Value) Or _
(VarType(Cells(j, 1).Value) = vbString And Len(Cells(j, 1).Value) = 0)) Or _
(IsEmpty(Cells(j, 2).Value) Or
(VarType(Cells(j, 2).Value) = vbString And Len(Cells(j, 2).Value) = 0)) Then _
Cells(j, 1).EntireRow.Delete
Gruss Hansueli
AW: Typen unverträglich
EtoPHG
Nicole,
Um ganz sicher zu gehen schreibe:
-----------------------
On Error Resume Next
If (IsEmpty(Cells(j, 1).Value) Or _
(VarType(Cells(j, 1).Value) = vbString And Len(Cells(j, 1).Value) = 0)) Or _
(IsEmpty(Cells(j, 2).Value) Or
(VarType(Cells(j, 2).Value) = vbString And Len(Cells(j, 2).Value) = 0)) Then _
Cells(j, 1).EntireRow.Delete
On Error Goto 0
----------------------------
Gruss Hansueli
Anzeige
AW: Typen unverträglich
21.09.2004 15:07:58
Nicole
Jetzt krieg ich einen Syntaxfehler in Zeile 4.
Und der neue Code erscheint bei mir in roter Farbe! Bedeutung?
Sehe absolut nicht mehr durch.......hab mal gedacht das sei ganz simpel......

Sub Leerzeilen_loeschen1()
Dim j As Double
Application.ScreenUpdating = False
For j = (i - 1) * 140 + 120 To 2 Step -1
If (IsEmpty(Cells(j, 1).Value) Or _
(VarType(Cells(j, 1).Value) = vbString And Len(Cells(j, 1).Value) = 0)) Or _
(IsEmpty(Cells(j, 2).Value) Or
(VarType(Cells(j, 2).Value) = vbString And Len(Cells(j, 2).Value) = 0)) Then _
Cells(j, 1).EntireRow.Delete
Next j
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Typen unverträglich
EtoPHG
Nicole,
Sorry da fehlen ein paar underlines
Also so:
-------------------------------
On error resume next
If (IsEmpty(Cells(j, 1).Value) Or _
(VarType(Cells(j, 1).Value) = vbString And Len(Cells(j, 1).Value) = 0)) Or _
(IsEmpty(Cells(j, 2).Value) Or _
(VarType(Cells(j, 2).Value) = vbString And Len(Cells(j, 2).Value) = 0)) Then _
Cells(j, 1).EntireRow.Delete
On error goto 0
-------------------------------
Gruss Hansueli
AW: Typen unverträglich
21.09.2004 15:17:05
Nicole
SUUUUPER!!!!!
Jetzt funktioniert es!!!!!!!! Vielen herzlichen Dank für deine Hilfe, bringt mich ein ganzes Stück weiter!!!!
Viele Grüsse
Nicole

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige