1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. oh-ha

Beiträge von oh-ha

  • Bei "StringSplit" immer das letzte Array als Variable

    • oh-ha
    • 1. August 2010 um 17:35

    hehe und ich dummer Junge ich habe mich für die Variante mit dem Array entschieden. :rolleyes:
    Meinen größten Angstgegner bei Autoit. :D
    Naja kann ja sein das ich da mal was Lerne in der Richtung. ;)


    mfg
    oh-ha

  • Bei "StringSplit" immer das letzte Array als Variable

    • oh-ha
    • 1. August 2010 um 16:40

    hehe Danke blubbstar

    Das es auch ohne Array geht hätte ich so nü nicht gedacht.

    Überhaupt das es so viele Lösungsmöglichkeiten für ein und dasselbige Problem gibt.
    Führen halt doch viele Wege nach Rom.
    Den meinigen in dieser Sache habe ich schon gefunden.


    mfg
    oh-ha

  • Bei "StringSplit" immer das letzte Array als Variable

    • oh-ha
    • 1. August 2010 um 14:55

    XTC99
    hehe da hätte ich nun doch ein kleines Verständnis Problem :D

    Bekomme schon Fluchtgedanken vorm Rechner wenn ich nur an Arrya´s Denke.
    Hoffe mal das BugFix das nicht liest. :rolleyes:

    mfg
    oh-ha

  • Bei "StringSplit" immer das letzte Array als Variable

    • oh-ha
    • 1. August 2010 um 14:18

    Jo geht so einwandfrei
    Sowohl das von ideas2code, was mir sogar besser gefällt als mein Ansatz, als auch die anderen.
    Bedanke mich bei euch und setzte das mal auf gelöst.


    mfg
    oh-ha

  • Bei "StringSplit" immer das letzte Array als Variable

    • oh-ha
    • 1. August 2010 um 14:05

    moin moin,

    Habe einen Pfad zu einer Datei den ich über den "FileOpenDialog" bekomme.
    Dieser Pfad ist immer verschieden.

    [autoit]

    #include <Array.au3>
    $message = "Um mehrere Dateien auszuwählen, ist die Strg-Taste oder die Shift-Taste zu drücken."
    $var = FileOpenDialog($message, @WindowsDir & "\", "Bilder (*.jpg;*.bmp)", 1 + 4 )
    $splitten = StringSplit($var,"\")
    _ArrayDisplay($splitten)

    [/autoit]


    Damit bekomme ich ja den Pfad gesplittet als Array und der Dateiname ist immer an letzter stelle egal wie lang der Pfad ist.
    Nur wie bekomme ich das letzte Array als Variable ?

    mfg
    oh-ha

  • Excel, Zeile löschen wenn (Summe = $rechnung) ist geht nicht

    • oh-ha
    • 1. August 2010 um 10:24

    Habe es raus bekommen.
    Verstehe zwar noch nicht warum aber zumindest geht es jetzt.
    Hier mal der richtige Code:

    Spoiler anzeigen
    [autoit]

    $Zeilenanzahl = $oExcel.ActiveSheet.Cells($oExcel.Rows.Count, 1).End(-4162).Row
    $Zeilenanzahl2 = $oExcel.ActiveSheet.Cells($oExcel.Rows.Count, 3).End(-4162).Row
    $Spaltenanzahl = $oExcel.ActiveSheet.Cells(10, $oExcel.Columns.Count).End(-4159).Column
    $rech = $Zeilenanzahl -7
    $rechnung = -99 * $rech
    Func neunundneun()
    For $Zeilen = $Zeilenanzahl To 7 Step -1
    While 1
    $wandeln2 = _ColNrToLetter($Spaltenanzahl)
    If $Spaltenanzahl = 4 Then ExitLoop
    $Spaltenanzahl = $Spaltenanzahl-1
    If $oExcel.Application.Sum($oExcel.Cells("7", $wandeln2).Resize($Zeilenanzahl,1)) = $rechnung Then
    $oExcel.Columns($wandeln2 & ":" & $wandeln2).Select
    $oExcel.Selection.Delete.Shift = -4161
    EndIf
    WEnd
    Next
    EndFunc;==>neunundneun

    [/autoit] [autoit][/autoit] [autoit]

    Func _ColNrToLetter($iColNr)
    If $iColNr <= 26 Then Return Chr($iColNr+64)
    $iColNr -= 26
    Local $1 = 65, $2 = 90, $tmp, $diff = 1
    $tmp = Mod($iColNr,26)
    If $tmp Then
    $2 = 64 +$tmp
    $diff = 0
    EndIf
    $1 += Int($iColNr/26) - $diff
    Return Chr($1) & Chr($2)
    MsgBox(0,"$iColNr",$iColNr)
    EndFunc

    [/autoit]


    Haut irgendwie nicht hin wenn ich in Zeile 12 die Zelle Variabel mache.


    mfg
    oh-ha

  • Excel, Zeile löschen wenn (Summe = $rechnung) ist geht nicht

    • oh-ha
    • 31. Juli 2010 um 13:33

    Habe das von dir mal in einen Autoit code gemacht.

    [autoit]

    #include <Excel.au3>
    $sFilePath = @DesktopDir & "\muster.xls"
    $oExcel = _ExcelBookOpen($sFilePath)
    If $oExcel.Target.Column <> 3 Then Exit
    $oExcel.Application.EnableEvents = 0 ;0 = False
    If $oExcel.Target.Value = "autoit" Then $oExcel.Target.EntireRow.Delete
    $oExcel.Application.EnableEvents = 1 ;1 = True

    [/autoit]


    Mein Problem ist einfach das es auf mehreren Rechnern zum einsatz kommt und die da meist sehr eigen sind was Makros angeht.

    mfg
    oh-ha

  • Excel, Zeile löschen wenn (Summe = $rechnung) ist geht nicht

    • oh-ha
    • 31. Juli 2010 um 13:19

    hehe da sind wir ja schon zwei :D

  • Excel, Zeile löschen wenn (Summe = $rechnung) ist geht nicht

    • oh-ha
    • 31. Juli 2010 um 13:06

    ups,

    nü haben wir uns missverstanden.

    Die -4161 = xlup bei Excel
    Der Tabelle wird damit mitgeteilt das sie nach oben verschieben soll.
    Kannst du im Visual-Basic-Editor in Excel nachschauen wenn du die F2 klickst und da, im Objektkatalog, mal xlup eingibst in der Suche.
    Dann sollte da unten stehen
    Const xlUp = -4162 (&HFFFFEFBE)
    So hole ich mir alle Const. in Excel um sie mit Autoit direkt anzusprechen.


    mfg
    oh-ha

  • Excel, Zeile löschen wenn (Summe = $rechnung) ist geht nicht

    • oh-ha
    • 31. Juli 2010 um 12:49

    Hallo Alina,

    Erst einmal Danke für die Antwort.
    Excel wird mitgeteilt wohin es verschieben musss. Ist diese Zeile im Code

    [autoit]

    $oExcel.Selection.Delete.Shift = -4161

    [/autoit]


    xlup = -4161

    mfg
    oh-ha

  • Excel, Zeile löschen wenn (Summe = $rechnung) ist geht nicht

    • oh-ha
    • 31. Juli 2010 um 12:35

    Moin moin,

    Versuche aus einer Tabelle Zeilen zu löschen die eine bestimmte Summe haben.

    Spoiler anzeigen
    [autoit]

    $Zeilenanzahl = $oExcel.ActiveSheet.Cells($oExcel.Rows.Count, 1).End(-4162).Row ; -4162 = xlUp
    $Zeilenanzahl2 = $oExcel.ActiveSheet.Cells($oExcel.Rows.Count, 3).End(-4162).Row
    $Spaltenanzahl = $oExcel.ActiveSheet.Cells(10, $oExcel.Columns.Count).End(-4159).Column

    [/autoit] [autoit][/autoit] [autoit]

    Func nullzeilenloeschen()
    For $Zeilen = $Zeilenanzahl To 8 Step -1
    While 1
    $wandeln2 = _ColNrToLetter($Spaltenanzahl)
    If $Spaltenanzahl = 4 Then ExitLoop
    $Spaltenanzahl = $Spaltenanzahl-1
    If $oExcel.Application.Sum($oExcel.Cells($Zeilen, $wandeln2).Resize($Zeilenanzahl,1)) = 0 Then
    $oExcel.Columns($wandeln2 & ":" & $wandeln2).Select
    $oExcel.Selection.Delete.Shift = -4161
    EndIf
    WEnd
    Next
    EndFunc;==>nullzeilenloeschen

    [/autoit] [autoit][/autoit] [autoit]

    Func _ColNrToLetter($iColNr)
    If $iColNr <= 26 Then Return Chr($iColNr+64)
    $iColNr -= 26
    Local $1 = 65, $2 = 90, $tmp, $diff = 1
    $tmp = Mod($iColNr,26)
    If $tmp Then
    $2 = 64 +$tmp
    $diff = 0
    EndIf
    $1 += Int($iColNr/26) - $diff
    Return Chr($1) & Chr($2)
    EndFunc

    [/autoit]

    Das geht auch so weit.

    Nur wenn ich das selbe Variabel gestalte also anstatt der festen 0 eine Variable benutze geht es nicht.

    Spoiler anzeigen
    [autoit]

    $Zeilenanzahl = $oExcel.ActiveSheet.Cells($oExcel.Rows.Count, 1).End(-4162).Row
    $Zeilenanzahl2 = $oExcel.ActiveSheet.Cells($oExcel.Rows.Count, 3).End(-4162).Row
    $Spaltenanzahl = $oExcel.ActiveSheet.Cells(10, $oExcel.Columns.Count).End(-4159).Column
    $rech = $Zeilenanzahl -7
    $rechnung = -99 * $rech
    Func neunundneun()
    For $Zeilen = $Zeilenanzahl To 7 Step -1
    While 1
    $wandeln2 = _ColNrToLetter($Spaltenanzahl)
    If $Spaltenanzahl = 4 Then ExitLoop
    $Spaltenanzahl = $Spaltenanzahl-1
    If $oExcel.Application.Sum($oExcel.Cells($Zeilen, $wandeln2).Resize($Zeilenanzahl,1)) = $rechnung Then
    $oExcel.Columns($wandeln2 & ":" & $wandeln2).Select
    $oExcel.Selection.Delete.Shift = -4161
    EndIf
    WEnd
    Next
    EndFunc;==>neunundneun

    [/autoit] [autoit][/autoit] [autoit]

    Func _ColNrToLetter($iColNr)
    If $iColNr <= 26 Then Return Chr($iColNr+64)
    $iColNr -= 26
    Local $1 = 65, $2 = 90, $tmp, $diff = 1
    $tmp = Mod($iColNr,26)
    If $tmp Then
    $2 = 64 +$tmp
    $diff = 0
    EndIf
    $1 += Int($iColNr/26) - $diff
    Return Chr($1) & Chr($2)
    MsgBox(0,"$iColNr",$iColNr)
    EndFunc

    [/autoit]


    Das Ergebnis von $rechnung ist so weit richtig in diesem Fall -11781 nur löscht er mir die zeilen halt nicht.
    Kann es sein das autoit mit dem (-) Zeichen nicht klar kommt ?
    Hatte es auch schon in klammern ( $rechnung ) versucht mit dem selbigen ergebnis.


    mfg
    oh-ha

  • Excel, ende der Tabelle abschneiden

    • oh-ha
    • 16. Juli 2010 um 20:31

    Oh man,

    ein dickes DANKE dafür und das auch noch zweifarbig. Kannst dir nicht Vorstellen wie lange ich schon darüber am Grübeln bin.


    mfg
    oh-ha

  • Excel, ende der Tabelle abschneiden

    • oh-ha
    • 16. Juli 2010 um 20:04

    Jo Danke dir

  • Excel, ende der Tabelle abschneiden

    • oh-ha
    • 16. Juli 2010 um 19:42

    Sorry fürs warten,

    wollte es nur komplett durchtesten bevor ich was sage.
    Also bei mir geht es so nicht. Die Formatierung der Spalten geht immer noch über die Tabelle hinaus.
    Kann oder könnte man nicht während der Formatierung der Spalten die länge bestimmen ?
    Ist nur so ein Gedanke von mir, da ich auch nicht weiß wie man das machen könnte.
    Das Ende der Tabelle bekomme ich ja, müßte das " nur " in die Schleife mit einbauen in der jede zweite Spalte blau gemacht wird.


    mfg
    oh-ha

  • Excel, ende der Tabelle abschneiden

    • oh-ha
    • 16. Juli 2010 um 19:12

    Danke schon mal für die Antwort.
    Das Problem ist auch das die Tabellen unterschiedlich lang sind also das Ende nicht festgelegt ist.
    Und da bin ich schon wieder in meiner Denk-schleife.
    Du hast mir ja mal das gegeben damit ich die Bezeichnung von letter auf Zahl und umgekehrt machen kann.

    [autoit]

    Func _LetterToColNr($sLetter)
    If StringLen($sLetter) = 1 Then Return Asc(StringUpper($sLetter)) -64
    Return (Asc(StringUpper(StringLeft($sLetter, 1)))-64)*26 + (Asc(StringUpper(StringRight($sLetter, 1)))-64)
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func _ColNrToLetter($iColNr)
    If $iColNr <= 26 Then Return Chr($iColNr+64)
    $iColNr -= 26
    Local $1 = 65, $2 = 90, $tmp, $diff = 1
    $tmp = Mod($iColNr,26)
    If $tmp Then
    $2 = 64 +$tmp
    $diff = 0
    EndIf
    $1 += Int($iColNr/26) - $diff
    Return Chr($1) & Chr($2)
    EndFunc

    [/autoit]


    Nur komme ich damit gar nicht klar.

    mfg
    oh-ha

  • Excel, ende der Tabelle abschneiden

    • oh-ha
    • 16. Juli 2010 um 19:05

    Hallo,

    Versuche nun schon seit Tagen es hinzubekommen das meine Tabellen richtig ausgedruckt werden.

    Derzeitig sieht das so aus:
    [Blockierte Grafik: http://www.imgbox.de/users/jojono/autoit/Bild1.JPG]

    Habe dank BugFix es hinbekommen jede zweite Spalte blau zu hinterlegen.

    [autoit]

    $Zeilenanzahl = $oExcel.ActiveSheet.Cells($oExcel.Rows.Count, 1).End(-4162).Row ; -4162 = xlUp
    $i = 8
    While $i <= $Zeilenanzahl
    $oExcel.Rows($i).Interior.ColorIndex = 34
    $i += 2
    WEnd

    [/autoit]


    Wenn ich nun die Tabelle ausdrucke werden die blauen Spalten leider über der Tabelle hinaus auch mit ausgedruckt.

    Habe so einiges probiert" siehe hier " aber bekomme es einfach nicht hin.
    kann man die Spalten so formatieren das sie am Ende der Tabelle aufhören ?
    kann man am Ende der Tabelle alles abschneiden (löschen) ?
    Komme einfach nicht weiter.


    mfg
    oh-ha

  • Excel, sheet kopieren und wieder einfügen in neuen sheet

    • oh-ha
    • 2. Juli 2010 um 18:50

    Habe mal das von BugFix bekommen, würde mir dabei ja schon helfen, nur komme ich damit nicht klar.


    [autoit]


    Func _LetterToColNr($sLetter)
    If StringLen($sLetter) = 1 Then Return Asc(StringUpper($sLetter)) -64
    Return (Asc(StringUpper(StringLeft($sLetter, 1)))-64)*26 + (Asc(StringUpper(StringRight($sLetter, 1)))-64)
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func _ColNrToLetter($iColNr)
    If $iColNr <= 26 Then Return Chr($iColNr+64)
    $iColNr -= 26
    Local $1 = 65, $2 = 90, $tmp, $diff = 1
    $tmp = Mod($iColNr,26)
    If $tmp Then
    $2 = 64 +$tmp
    $diff = 0
    EndIf
    $1 += Int($iColNr/26) - $diff
    Return Chr($1) & Chr($2)
    EndFunc

    [/autoit]


    mfg
    oh-ha

  • Excel, sheet kopieren und wieder einfügen in neuen sheet

    • oh-ha
    • 29. Juni 2010 um 21:17

    hat keiner Idee wie man das machen könnte ?

  • Excel, sheet kopieren und wieder einfügen in neuen sheet

    • oh-ha
    • 27. Juni 2010 um 13:33

    moin moin,


    Habe mal " WIEDER " ein problem mit Excel.
    Möchte die Tabelle komplett auschneiden, da über die Ränder hinaus noch Rahnenlinien sind und andere Formatierungen die man sieht.
    Dann die kopierte Tabelle in einen neuen Sheet wieder einfügen.
    Nur bleibe ich immer an dieser Zeile hängen " $oExcel.Range($oExcel.cells($Spaltenanzahl,1)).Select " und " $oExcel.Range($oExcel.cells($Spaltenanzahl,1)).Activate "
    wobei diese geht "$oExcel.Range($oExcel.cells(1,1),$oExcel.cells($Zeilenanzahl2,$Spaltenanzahl)).Select "

    Der Code:

    [autoit]


    ;Enden der Tabelle bestimmen
    $Zeilenanzahl = $oExcel.ActiveSheet.Cells($oExcel.Rows.Count, 1).End(-4162).Row ; -4162 = xlUp
    $Zeilenanzahl2 = $oExcel.ActiveSheet.Cells($oExcel.Rows.Count, 3).End(-4162).Row ; -4162 = xlUp
    $Spaltenanzahl = $oExcel.ActiveSheet.Cells(10, $oExcel.Columns.Count).End(-4159).Column ; -4159

    [/autoit][autoit][/autoit][autoit]

    ;Tabellensheed kopieren und in neuen Sheed einfügen
    $oExcel.Range($oExcel.cells($Spaltenanzahl,1)).Select ;Vormals = $oExcel.Range("AM1").Select
    $oExcel.ActiveCell.FormulaR1C1 = ""
    $oExcel.Range($oExcel.cells(1,1),$oExcel.cells($Zeilenanzahl2,$Spaltenanzahl)).Select ;$ Vormals = oExcel.Range("A1,1:AM47").Select
    $oExcel.Range($oExcel.cells($Spaltenanzahl,1)).Activate ; Vormals = $oExcel.Range("AM1").Activate
    $oExcel.Selection.Copy
    $oExcel.Sheets("TestTabelle").Select
    $oExcel.Sheets.Add
    $oExcel.ActiveSheet.Paste
    $oExcel.Sheets("TestTabelle").Select
    $oExcel.application.displayalerts = false
    $oExcel.ActiveWindow.SelectedSheets.Delete
    $oExcel.Sheets("Tabelle1").Select
    $oExcel.Sheets("Tabelle1").Name = "Zweite Testtabelle"
    $oExcel.application.displayalerts = True

    [/autoit]


    Wie muß ich die Zeilen ändern damit Excel damit arbeiten kann ?

    mfg
    oh-ha

  • Text in Zellen splitten

    • oh-ha
    • 26. Juni 2010 um 09:20

    Ok habe es nun,

    Danke für die Denkanstöße :)

    Habe da wohl so einiges verwechselt.
    So geht es nun:

    [autoit]


    $sFilePath3 = @ScriptDir & "\test.xls" ; Pfad bestimmen zu der Tabelle allgemein
    $oExcel = _ExcelBookOpen($sFilePath3, $fVisible = 0); Tabelle öffnen
    $oExcel.ActiveSheet.Range("A7:A7" ).Select ; Makieren
    $oExcel.ActiveCell.EntireRow.Insert(1) ; fügt eine Zeile hinzu
    $read1 = _ExcelReadCell($oExcel, 6, 1) ; Wird die Zelle A6 eingelesen
    $array = StringSplit($read1, ",", 1) ; Wird der Text der Zelle A6 gesplittet. Splitzeichen = ,
    _ExcelWriteCell ($oExcel, $array[1], 6, 1) ; Array[1] in die Zelle A6 einlesen
    _ExcelWriteCell ($oExcel, $array[2], 7, 1) ; Array[2] in die Zelle A7 einlesen
    MsgBox(0, "$result:", $array[1]) ; Zum testen ( Array[1] wird richtig angezeigt)
    MsgBox(0, "$result:", $array[2]) ; Zum testen ( Array[2] wird richtig angezeigt)
    MsgBox(0, "$result:", @error) ; @error = 0
    _ExcelBookSaveAs($oExcel, @ScriptDir & "\Test123.xls")
    _ExcelBookClose($oExcel)

    [/autoit]

    mfg
    oh-ha

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™