AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

AnsiStringArray aus DLL an Excel-VBA

Ein Thema von Andreas13 · begonnen am 25. Apr 2019 · letzter Beitrag vom 10. Mai 2019
 
EWeiss
(Gast)

n/a Beiträge
 
#11

AW: AnsiStringArray aus DLL an Excel-VBA

  Alt 30. Apr 2019, 14:33
Zitat:
Ich habe sie so abgewandelt
Wie ich schon sagte es bleibt dir überlassen wie du das später auslegen willst.

Aber gut wenn es jetzt funktioniert.
Mein Lösungsansatz war nur als Denkanstoß gedacht.

Zitat:
' Hat denn VBA keine Funktion wie Pascal's Min?? --> Bis := Min(a_Anz, Anzahl)
Min ist eine Excel Funktion oder?
Code:
WorksheetFunction.Min(20, 501, 561, 45, 78)
Wenn du das nicht willst dann mache dir selber was wenn du denkst es ist von nöten.
LBound = MIN
UBound = MAX

Code:
Private Function Min(ParamArray values() As Variant) As Variant
Dim i As Integer
Dim min_value As Variant

    min_value = values(LBound(values))
    For i = LBound(values) + 1 To UBound(values)
        If min_value > values(i) Then min_value = values(i)
    Next

    Min = min_value
End Function

Private Function Max(ParamArray values() As Variant) As Variant
Dim i As Integer
Dim max_value As Variant

    max_value = values(LBound(values))
    For i = LBound(values) + 1 To UBound(values)
        If max_value < values(i) Then max_value = values(i)
    Next

    Max = max_value
End Function

' Teste Min, Max
Private Sub cmdGo_Click()
    txtMin.Text = Format$(Min( _
        CInt("2873"), _
        CInt("4398"), _
        CInt("7846"), _
        CInt("1876"), _
        CInt("4792"), _
        CInt("3982"), _
        CInt("4863"), _
        CInt("9382")))
   
    txtMax.Text = Format$(Max( _
        CInt("2873"), _
        CInt("4398"), _
        CInt("7846"), _
        CInt("1876"), _
        CInt("4792"), _
        CInt("3982"), _
        CInt("4863"), _
        CInt("9382")))
End Sub
Code:
Const Delimiter = 124
Etwas unsauber weil du hier Delimiter ohne Angabe als Variant definierst.. ist aber Byte!
Wenn dann so!
Code:
Const Delimiter As Byte = 124
Siehe die Definition von PAnsiChar_To_Excel(bla bla.. Delimiter As Byte
Code:
Dim i As Long
Dim n_Anz As Long
Dim Bis As Long
zu
Code:
Dim i As Integer
Dim n_Anz As Integer
Dim Bis As Integer
Ein 32Bit DatenTyp ist für einfache for.. Next schleifen nicht nötig.
Zitat:
Die beiden Lösungen sind zum Ausprobieren im beiliegenden Excel-File ToExcel_Test_2.xlsm vorhanden
Habe Office wieder deinstalliert da ich es eigentlich nicht brauche und es nur eine Test Version war.

PS:
VBA ist kein Delphi daher wäre es besser du verwendest die Format Funktion des Forum
Code:
Dim x As Integer
Dim i As Integer
nicht
Delphi-Quellcode:
var
  x:Integer;
  i:Integer;
dann liest es sich besser.

gruss

Geändert von EWeiss ( 9. Jul 2019 um 08:32 Uhr)
  Mit Zitat antworten Zitat
 

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz