動的に変わるピクチャーボックスの内容を以下の配列変数に設定したいのです。
dim Pct(X) as picturebox
set pct(X) = form1.picture1
同じピクチャーボックスを表示したい場合は、以下のように変数から画面に設定したいのです。
set form1.picture1 = pict(X)
が、退避しているはずなのに、全てがおなじピクチャーになってしまいます。
そんなことってありますか?
私が間違っているところがあれば、教えてください。
ピクチャーの内容は、VBからExcelのグラフを編集した後、クリップボード経由でピクチャーボックスに貼り付けたものです。
No.4
- 回答日時:
#2 の訂正です。
Dim Pct(X) As Picturebox
で、いきなり
Pct(X).PaintPicutre
としようとしてもダメでした。
Pct(X) の中身が空だから(実体がないから)です。
Set Pct(X) = New PictureBox
なんてことしようとしてもできないみたいだし、
やはり、PictureBox をコントロール配列で用意しておくくらいしか方法がないような気がします。
No.3
- 回答日時:
ダメだった理由は、No1さんと同じです。
とにかく、Set xx = xx
の物は全て、参照ですので、実体がコピーされる訳ではありません。
対処は、VB6まででしたら、PictureBoxを配列で
必要な数だけ用意しておき、表示内容をコピーするのが単純かと。
必要な数があらかじめ不明な場合は、Loadで配列内の個数を
後から増やせます。
No2さんの答えは、あってる気もしますが、pcx(X)に
別々のPictureBoxが設定されていないと
やはり同じ結果になるように思います。
(なにも設定されていなければ、エラー)
No.1ベストアンサー
- 回答日時:
そんなことあります。
(^_^;というのは、これは退避していないからです。
Set AAA = BBB
というのは、参照先をセットしているだけで、中身はコピーされません。言い換えると「 AAA で見ているのは BBB ですよ。」ということです。
Set CCC = BBB
として、CCC を使って何か変更すると、一つだけ存在する実体(BBB が実体の場合もある)に変更が加えられるわけですが、AAA が見ているものも CCC が見ているものも同じ BBB なので、AAA で見ても変更されています。
このルールは PictureBox だけでなく、クラスなど、他のオブジェクトについても成り立ちます。
PictureBox の中身を退避(コピー)するには・・・どうすればいいんでしょうね。今、手元にVBがないのでわからないです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IF関数でEmpty値を設定する方法。
-
C#の質問
-
パソコンキーボードで時分秒を...
-
変数を動的に作るには?
-
動的配列が存在(要素が有る)か...
-
VBAで配列の計算
-
C言語 配列からランダムに素数...
-
VBでbyte配列型のインスタンス...
-
For文と配列
-
VBA 配列数式的に一括してR...
-
配列の要素数を超えた参照のコ...
-
VBで作った乱数を一度も重複さ...
-
等間隔にベクトルを作成。(MAL...
-
遅延バインディングを使用でき...
-
ラジオボタンのチェックをEnter...
-
C#での画像送信プログラム(ネ...
-
VB.net 引数で配列変数を渡す際...
-
int型配列の一括初期化
-
【MFC】GetCount()とGetSize()...
-
C# Splitと配列の複合方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
IF関数でEmpty値を設定する方法。
-
パソコンキーボードで時分秒を...
-
VBAで配列の計算
-
EXCEL VBA で、0から?1から?
-
変数を動的に作るには?
-
VB.net 引数で配列変数を渡す際...
-
動的配列が存在(要素が有る)か...
-
VBで作った乱数を一度も重複さ...
-
配列の要素数を超えた参照のコ...
-
複数のテキストボックスに同じ...
-
C言語 重複しない4ケタの乱数...
-
javaプログラムについて
-
C#の質問
-
Visual C++ でコントロールを...
-
遅延バインディングを使用でき...
-
Excel VBAで配列の途中から(X)M...
-
排列と配列の漢字の使い分けは
-
For文と配列
-
VBでbyte配列型のインスタンス...
-
C言語で3次元配列の課題をして...
おすすめ情報