2016-05-21 80 views
1

現在の高校生vb6を学習しており、これらのイメージボックスの左と上の値を設定しようとするとこの大きな問題が発生します。私はエラーを取得し続ける:VB6:オブジェクト変数またはブロック変数が設定されていません

Object Variable or With Block Variable Not Set

そして、デバッグは、左と最高値の変数につながっているようです。

Option Explicit 

Dim GapY As Integer 
Dim GapX As Integer 

Dim x As Integer 
Dim y As Integer 

Dim Tile() As Image 
Dim NumOfTiles 

Dim h, i As Integer 'Counter  

Private Sub cmdRender_Click() 
    x = 480 
    y = 480 

    GapX = Val(InputBox("Enter How Many tile you want horizontally:")) 
    GapY = Val(InputBox("Enter How Many tile you want vertically")) 

    NumOfTiles = (GapY * GapX) 

    ReDim Tile(NumOfTiles) 

    For i = 1 To GapY 
     For h = 1 To GapX 

      Tile(h).Height = 615 
      Tile(h).Width = 615 
      Tile(h).Left = x 
      Tile(h).Top = y   
      'Tile(h).Stretch = True 
      x = x + 600 
     Next 
     y = y + 600 
     x = 480 
    Next     
End Sub 

答えて

2

あなたはNumOfTiles空のポジションを持つ配列を持っている、すなわち、あなたのタイル配列に任意の画像を割り当てていません。

あなたの画像をどこから取得しているのか分かりません。あなたはPictureBoxコントロールで仕事をしたいおそらくnew Imageまたはファイルから画像を読み取るか、フォーム上の画像ボックスからそれらを取るなど


で画像を作成することがあります。フォーム上で、このようなコントロールを持っている場合、あなたは(あなたがフォーム上のいくつかを置いていると仮定して)、そのような

Dim Tile() As PictureBox 
ReDim Tile(NumOfTiles) As PictureBox 

として配列を入力し、フォームからそれらを割り当てる必要があります:

Set Tile(1) = pictureBox1 
Set Tile(2) = pictureBox2 
... 

またはループ

For i = 1 To NumOfTiles 
    Set Tile(i) = Me("pictureBox" & i) 
    Tile(i).Left = ... 
Next 

またはこのような何かをフォーム上に作成するには(私はそれを試していなかった)

Set Tile(i) = Me.Controls.Add("VB.PictureBox", "pictureBox" & i) 
+0

イメージボックスを空のままにしておきたいが、これは私の問題がどこから派生したものではない。それは、私が画像ボックスのプロパティのうちの1つ、例えば、.leftと.topを変更しようとする瞬間です。 – JustTheRennie

+0

'Tile(i)'は 'Nothing'です。すなわち、ピクチャボックスは空ではなく、全く存在しません! –

+1

オリビエが正しいです。イメージを保持するための配列を作成しましたが、実際のイメージはありません。それはあなたの中に靴がない靴箱の負荷を作成したようなものです。あなたは靴を箱に入れることができますが、箱に入れるまで靴で何もすることはできません。だから、そこに靴がないときには、「ボックス1の靴の靴ひもを結ぶ」と同等のことを言っている。 – OldBoyCoder

関連する問題