大規模なプロジェクトの一部として、一連の画像を 1 つのマクロ内に表示する必要があります。これを実行すると、最後の msgbox の後に最終的な画像が表示され、他の画像はその下に重ねられます。
Sub Macro4()
Dim x As Integer
Dim Pic As Object
Dim picname As String
For x = 1 To 7
picname = ThisWorkbook.Path & "/" & "pic" & x & ".png"
ActiveSheet.Pictures.Insert(picname).Select
MsgBox (x)
Next x
End Sub
Msgbox コマンドはプロセスを遅くするためにあります。これにより、画像の変化を見ることができます (この場合は見えません)。
画像はpic1.png、pic2.pngなどと呼ばれます
マクロ中に個別の画像を表示するにはどうすればよいですか?
再編集:
ここに画像関数と、ミュージーク コンクレットのランダムな曲を演奏するより大きな関数があります。
Private Declare Function PlaySound Lib "winmm.dll" _
Alias "PlaySoundA" (ByVal lpszName As String, _
ByVal hModule As Long, ByVal dwFlags As Long) As Long
showpicは、再生されているサウンドのピッチに関連するイメージを提供します。
Function showpic(value)
Dim v As Integer
v = value
picname = ThisWorkbook.Path & "/" & "pic" & v & ".png"
ActiveSheet.Shapes.AddPicture (picname), True, True, a1, a1, 170, 170
DoEvents
End Function
playは、楽器とピッチを選択し、必要なファイル名を作成するランダム化されたプロセスによって生成された一連の特定のサウンド ファイルを実行します。「ピース」は「メモ」秒間実行され、「条件」に一致するように特定の「セル」の値を変更する別のマクロによってトリガーされます。
Function play(Cell, condition, notes)
Dim WAVFile As String
Dim x As Integer
Dim y As Integer
Dim z As Integer
Dim c As String
Dim d As String
Dim currentcell As String
Dim pitchcell As String
Const SND_SYNC = &H0
Const SND_ASYNC = &H1
Const SND_FILENAME = &H20000
On Error GoTo ErrHandler
For x = 1 To notes
If Evaluate(Cell.value & condition) Then
y = x + 65
z = x + 39
c = Chr(y)
d = Chr(z)
If y > 90 Then c = "A" & d
currentcell = c & 6
pitchcell = c & 3
showpic (Sheets("Sheet1").Range(pitchcell).value)
WAVFile = ThisWorkbook.Path & "/" & Sheets("Sheet1").Range(currentcell).Text & ".wav"
Call PlaySound(WAVFile, 0&, SND_SYNC)
End If
Next x
ErrHandler:
play = False
Exit Function
End Function
3 つの問題があります。
- 最初の画像ファイルが表示されない
- 最初に「計算」または F9 を実行するため、作品が再ランダム化され、表示されたシーケンスは再生されません。これは最初の DoEvents が原因だと思います。
- 2回再生するようになりました!ただし、2 回目にはすべての画像ファイルが表示されます。