Tilde-Problem

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Frame MsgBox


Excel-Version: 9
nach unten

Betrifft: Tilde-Problem
von: UDF
Geschrieben am: 03.05.2002 - 13:41:18

Hallo Leute,


kann mir das jemand erklären?

von Markus
 ABC
1TEST1=VERGLEICH(A1;A:A;0)
2TEST~1#NV=VERGLEICH(A2;A:A;0)

Danke vorab und Gruss
Markus

nach oben   nach unten

Re: Tilde-Problem
von: Martin Beck
Geschrieben am: 03.05.2002 - 14:04:59

Hi Markus,

lange nicht gesehen ;-)

Erklärung, na ja;-) Ich vermute, daß Excel eine(!) Tilde beim Vergleich schlicht unterdrückt, d.h. bei Test~1 wird nach Test1 gesucht, und das wird nicht gefunden.

Schau Dir mal folgendes an:


MS Excel von Martin Beck an UDF
 AB
1Test1
2Test~~13
3Test~14
4Test1


Wenn Du Test~1 "suchst", mußt Du also Test~~1 vorgeben.

Gruß
Martin Beck

nach oben   nach unten

Kleine Bitte
von: Martin Beck
Geschrieben am: 03.05.2002 - 14:07:00

Hallo Markus,

kannst Du Dir mal https://www.herber.de/forum/messages/118099.html ansehen, vielleicht weißt Du, wie's geht.

Wäre mir eine große Hilfe.

Gruß
Martin Beck

nach oben   nach unten

Re: Kleine Bitte
von: UDF
Geschrieben am: 03.05.2002 - 14:20:32

Hallo Martin,

müsste etwa so gehen:

Private Type MP3Information
   ID As String       'ID
   Layer As String    'Layer
   Bitrate As Long    'Bitrate
   SampleRate As Long 'Hz
   Frames As Long     'Frame-Anzahl
   Duration As Long   'Länge (in Sekunden)
End Type

Sub DemoIt()
   Dim mp3Info As MP3Information
   Call GetMP3Information(strMP3File)
   msg
   MsgBox mp3Info.Bitrate
   MsgBox mp3Info.ID
   '...
End Sub

Private Function GetMP3Information(ByVal MP3File As String) As MP3Information
   Dim dIN As String
   Dim bitrate_lookup(7, 15) As Integer
   Dim bitrate_data As String
   Dim actual_bitrate As Long
   Dim X As Integer, Y As Integer
   Dim mp3_id As Double, mp3_layer As Double, mp3_prot As Double
   Dim mp3_bitrate As Double, mp3_freq As Double, mp3_pad As Double
   Dim framesize As Double, total_frames As Double, track_length As Double
   
   'Bitraten-Informationen
   bitrate_data = bitrate_data & "032,032,032,032,008,008,"
   bitrate_data = bitrate_data & "064,048,040,048,016,016,"
   bitrate_data = bitrate_data & "096,056,048,056,024,024,"
   bitrate_data = bitrate_data & "128,064,056,064,032,032,"
   bitrate_data = bitrate_data & "160,080,064,080,040,040,"
   bitrate_data = bitrate_data & "192,096,080,096,048,048,"
   bitrate_data = bitrate_data & "224,112,096,112,056,056,"
   bitrate_data = bitrate_data & "256,128,112,128,064,064,"
   bitrate_data = bitrate_data & "288,160,128,144,080,080,"
   bitrate_data = bitrate_data & "320,192,160,160,096,096,"
   bitrate_data = bitrate_data & "352,224,192,176,112,112,"
   bitrate_data = bitrate_data & "384,256,224,192,128,128,"
   bitrate_data = bitrate_data & "416,320,256,224,144,144,"
   bitrate_data = bitrate_data & "448,384,320,256,160,160,"
   
   For Y = 1 To 14
      For X = 7 To 5 Step -1
         bitrate_lookup(X, Y) = Left(bitrate_data, 3)
         bitrate_data = Right(bitrate_data, Len(bitrate_data) - 4)
      Next
      For X = 3 To 1 Step -1
         bitrate_lookup(X, Y) = Left(bitrate_data, 3)
         bitrate_data = Right(bitrate_data, Len(bitrate_data) - 4)
      Next
   Next
   
   Open MP3File For Binary As #1
   '4k der Datei einlesen, um einen Frameheader zu finden
   dIN = Input(4096, #1)
   filesize = LOF(1) 'Wird benötigt um die Tracklänge zu berechnen
   Close #1
   
   'Frame-Header beginnt mit 12 Bitsätzen
   Do Until i = 4095
      i = i + 1
      d1 = Asc(Mid(dIN, i, 1))
      d2 = Asc(Mid(dIN, i + 1, 1))
     
      If d1 = &HFF And (d2 And &HF0) = &HF0 Then
         '20 Header-Bits einlesen
         temp_string = Mid(dIN, i + 1, 3)
         mp3bits_string = ShiftBits(Mid(dIN, i + 1, 3))
         Exit Do
      End If
     
      dSHIFT = ShiftBits(Mid(dIN, i, 3))
      dd1 = Asc(Left(dSHIFT, 1))
      dd2 = Asc(Right(dSHIFT, 1))
     
      If dd1 = &HFF And (dd2 And &HF0) = &HF0 Then
         '20 Header-Bits einlesen
         mp3bits_string = Mid(dIN, i + 2, 3)
         Exit Do
      End If
   Loop
   
   'Die ersten 20 Bits sind Header-Infos für diesen Frame
   'Das 1. Bit ist die ID; 0 = MPG-2, 1 = MPG-1
   mp3_id = (&H80 And Asc(Left(mp3bits_string, 1))) / 128
   'Die nächsten 2 Bits sind Layer
   mp3_layer = (&H60 And Asc(Left(mp3bits_string, 1))) / 32
   'Das nächste Bit ist Schutz
   mp3_prot = &H10 And Asc(Left(mp3bits_string, 1))
   'Die nächsten 4 Bits beschreiben die Bitrate
   mp3_bitrate = &HF And Asc(Left(mp3bits_string, 1))
   'Die nächsten 2 Bits legen die Frequenz fest
   mp3_freq = &HC0 And Asc(Mid(mp3bits_string, 2, 1))
   'Das nächste Bit ist Padding
   mp3_pad = (&H20 And Asc(Mid(mp3bits_string, 2, 1))) / 2
   actual_bitrate = 1000 * CLng((bitrate_lookup((mp3_id * 4) Or mp3_layer, mp3_bitrate)))
   
   If mp3_id = 0 Then
      GetMP3Information.ID = "MPEG-2"
   Else
      GetMP3Information.ID = "MPEG-1"
   End If
   
   Select Case mp3_layer
      Case 1
         GetMP3Information.Layer = "Layer III"
      Case 2
         GetMP3Information.Layer = "Layer II"
      Case 3
         GetMP3Information.Layer = "Layer I"
   End Select
   GetMP3Information.Bitrate = actual_bitrate
   
   Select Case (mp3_id * 4) Or mp3_freq
      Case 0
         sample_rate = 22050
      Case 1
         sample_rate = 24000
      Case 2
         sample_rate = 16000
      Case 4
         sample_rate = 44100
      Case 5
         sample_rate = 48000
      Case 6
         sample_rate = 32000
   End Select
   GetMP3Information.SampleRate = sample_rate
   
   'Trackdauer berechnen
   framesize = ((144 * actual_bitrate) / sample_rate) + mp3_pad
   total_frames = filesize / framesize
   track_length = total_frames / 38.5 '38.5 Frames pro Sekunde
   
   GetMP3Information.Frames = Int(total_frames)
   GetMP3Information.Duration = Int(track_length)
End Function

Private Function ShiftBits(dIN As String) As String
   Dim sd1 As Integer, sd2 As Integer, sd3 As Integer
   Dim do1 As Integer, do2 As Integer
   
   sd1 = Asc(Left(dIN, 1))
   sd2 = Asc(Mid(dIN, 2, 1))
   sd3 = Asc(Right(dIN, 1))
   
   do1 = ((sd1 And &HF) * 16) Or ((sd2 And &HF0) / 16)
   do2 = ((sd2 And &HF) * 16) Or ((sd3 And &HF0) / 16)
   
   ShiftBits = Chr(do1) + Chr(do2)
End Function


Kann es leider nicht testen, da ich hier keine MP3-Dinger installiert habe und zu faul zum Suchen bin.

Gruss
Markus

 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Teilergebnisse ändern"