Thema Datum  Von Nutzer Rating
Antwort
26.11.2011 15:46:01 Kevin
NotSolved
Blau Mit Range rechnen
26.11.2011 18:22:05 Till
NotSolved
27.11.2011 16:38:28 Gast83591
NotSolved

Ansicht des Beitrags:
Von:
Till
Datum:
26.11.2011 18:22:05
Views:
915
Rating: Antwort:
  Ja
Thema:
Mit Range rechnen

CDbl bringt nichts wenn du es auf eine Double-Variable anwendest. Das musst du vor der Zuweisung machen. Das hilft aber auch nur wenn der entsprechende Wert eine als String formatierte Zahl ist, wenn es ein String ist führt es auch nur zu einem Fehler. Ich hab mal eine Funktion dazugebaut die mit erstmal mit Isnumeric prüft ob es sich um eine Zahl, in irgendeiner Weise, handelt.

Option Explicit

Public rngAuswahl As Range, Auswahl
Public anz_punkte As Integer
 
Private Sub uf_bereich_refedit_Click()
 
    If Len(Me.RefEdit1) Then
        Set rngAuswahl = Range(Me.RefEdit1)
        rngAuswahl.Select
        Auswahl = rngAuswahl.Value
    End If
    Hide
    
    Dim i As Double
    Dim Area As Double
    Dim xs As Double
    Dim gauss_area As Double
    Dim ys As Double
    Dim xa As Double
    Dim ya As Double
    Dim W1 As Double, W2 As Double
    
    anz_punkte = 5
    
    W1 = getNum(Auswahl(1, 1))
    W2 = getNum(Auswahl(1, 2))
    
    xs = W1
    ys = W2
    
    For i = 0 To anz_punkte
        
        xa = getNum(Auswahl(i, 1))
        ya = getNum(Auswahl(i, 2))
        Area = Area + (ys + ya) * (xs - xa)
        
    Next i
    xs = xa
    ys = ya
    
    xa = W1
    ya = W2
    
    Area = Area + (ys + ya) * (xs - xa)
    
    ' Rückgabewert
        gauss_area = Abs(Area) / 2
        MsgBox (gauss_area)
    
Unload Me
End Sub

Private Function getNum(V) As Double
    If IsNumeric(V) Then getNum = CDbl(V)
End Function

Außerdem solltest du zum rechnen Arrays benutzen und nicht Ranges, das geht wesentlich schneller und wirkt sich nicht auf die Quelldaten aus (solange du das nicht willst) und macht dein Prgramm weniger anfällig für Fehler. Um ein Array aus einer range zu erstellen kannst du einfach eine Variant Variable definieren und dieser die range zuweisen (Array=rng.value), ohne "set". Das Array kannst du dann genau wie eine Range auslesen...

Gruß

Till


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
26.11.2011 15:46:01 Kevin
NotSolved
Blau Mit Range rechnen
26.11.2011 18:22:05 Till
NotSolved
27.11.2011 16:38:28 Gast83591
NotSolved