Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3019 / 13646 ツリー ←次へ | 前へ→

【64756】わかりません(図形作成) とってぃ 10/3/12(金) 11:03 質問[未読]
【64764】Re:わかりません(図形作成) Jaka 10/3/12(金) 13:09 発言[未読]
【64765】Re:わかりません(図形作成) とってぃ 10/3/12(金) 13:59 質問[未読]
【64768】Re:わかりません(図形作成) Jaka 10/3/12(金) 15:09 発言[未読]
【64770】Re:わかりません(図形作成) とってぃ 10/3/12(金) 15:34 質問[未読]
【64773】Re:わかりません(図形作成) とってぃ 10/3/12(金) 16:48 お礼[未読]

【64756】わかりません(図形作成)
質問  とってぃ E-MAIL  - 10/3/12(金) 11:03 -

引用なし
パスワード
   1.Sheet2にコマンドボタン作成
2.Sheet1のD11〜D41に""(空白)があるなら、B列の同じ列にマル(オートシェイプ)
 を作成する。
作成してみましたがまったく動きません。
だれか教えてください。

Private Sub CommandButton1_Click()
Dim i  As Long
Const 余白率 = 15 '余白の割合(%)
  With Worksheets("Sheet1")
    For i = 11 To 41
      If .Cells(i, 4).Value = "" Then
        .Cells(i, 4).Offset(, -2).Select

ActiveSheet.Shapes.AddShape(msoShapeOval, .Left + .Width * 余白率 / 100, _
              .Top + .Height * 余白率 / 100, _
              .Width * (100 - (余白率 * 2)) / 100, _
              .Height * (100 - (余白率 * 2)) / 100) _
              .Fill.Visible = msoFalse
       
      End If
    Next
  End With

End Sub

【64764】Re:わかりません(図形作成)
発言  Jaka  - 10/3/12(金) 13:09 -

引用なし
パスワード
   Dim i  As Long, Shap As Shape
Const 余白率 = 15 '余白の割合(%)
  With Worksheets("Sheet1")
    For i = 11 To 41
      If .Cells(i, 4).Value = "" Then
        With .Cells(i, 4).Offset(, -2)
          '.Select
          Set Shap = ActiveSheet.Shapes.AddShape(msoShapeOval, .Left + .Width * 余白率 / 100, _
                .Top + .Height * 余白率 / 100, _
                .Width * (100 - (余白率 * 2)) / 100, _
                .Height * (100 - (余白率 * 2)) / 100)
        End With
        Shap.Fill.Visible = msoFalse
       Set Shap = Nothing
      End If
    Next
  End With

【64765】Re:わかりません(図形作成)
質問  とってぃ E-MAIL  - 10/3/12(金) 13:59 -

引用なし
パスワード
   Jaka さんありがとうございました。出来ました。
もう一つ追加したいのですどのようにコードを書けばよいのか教えてください。
With .Cells(i, 4).Offset(, -2)でB列を指定してますが、
そこに空白なら(B列)オートシェイプを作成しない。を追加したいのですが。。

▼Jaka さん:
>Dim i  As Long, Shap As Shape
>Const 余白率 = 15 '余白の割合(%)
>  With Worksheets("Sheet1")
>    For i = 11 To 41
>      If .Cells(i, 4).Value = "" Then
>        With .Cells(i, 4).Offset(, -2)
>          '.Select
>          Set Shap = ActiveSheet.Shapes.AddShape(msoShapeOval, .Left + .Width * 余白率 / 100, _
>                .Top + .Height * 余白率 / 100, _
>                .Width * (100 - (余白率 * 2)) / 100, _
>                .Height * (100 - (余白率 * 2)) / 100)
>        End With
>        Shap.Fill.Visible = msoFalse
>       Set Shap = Nothing
>      End If
>    Next
>  End With

【64768】Re:わかりません(図形作成)
発言  Jaka  - 10/3/12(金) 15:09 -

引用なし
パスワード
   ▼とってぃ さん:
>もう一つ追加したいのですどのようにコードを書けばよいのか教えてください。
>With .Cells(i, 4).Offset(, -2)でB列を指定してますが、
>そこに空白なら(B列)オートシェイプを作成しない。を追加したいのですが。。
提示されたコードを見る限り自分で解決できそうな感じですけど。

Dim i  As Long, Shap As Shape
Const 余白率 = 15 '余白の割合(%)
  With Worksheets("Sheet1")
    For i = 11 To 41
      With .Cells(i, 4)
        If .Value = "" Then
          With .Offset(, -2)
           '.Select
            If .Value <> "" Then
             Set Shap = ActiveSheet.Shapes.AddShape(msoShapeOval, _
                  .Left + .Width * 余白率 / 100, _
                  .Top + .Height * 余白率 / 100, _
                  .Width * (100 - (余白率 * 2)) / 100, _
                  .Height * (100 - (余白率 * 2)) / 100)
             Shap.Fill.Visible = msoFalse
             Set Shap = Nothing
            End If
          End With
         End If
      End With
    Next
  End With

【64770】Re:わかりません(図形作成)
質問  とってぃ E-MAIL  - 10/3/12(金) 15:34 -

引用なし
パスワード
   Jaka さん
すみません。
ちゃんと伝わっていませんでした。
1.D11〜D41の間で空白ならそのB列に○(オートシェイプ)を作成する。
2.作成列に文字がなかったら作成しない。
例1:D15が空白でB15に文字がある →B15に○を作成する。
例2:D18が空白でB18に文字がない →B18に○を作成しない。
です。

▼Jaka さん:
>▼とってぃ さん:
>>もう一つ追加したいのですどのようにコードを書けばよいのか教えてください。
>>With .Cells(i, 4).Offset(, -2)でB列を指定してますが、
>>そこに空白なら(B列)オートシェイプを作成しない。を追加したいのですが。。
>提示されたコードを見る限り自分で解決できそうな感じですけど。
>
>Dim i  As Long, Shap As Shape
>Const 余白率 = 15 '余白の割合(%)
>  With Worksheets("Sheet1")
>    For i = 11 To 41
>      With .Cells(i, 4)
>        If .Value = "" Then
>          With .Offset(, -2)
>           '.Select
>            If .Value <> "" Then
>             Set Shap = ActiveSheet.Shapes.AddShape(msoShapeOval, _
>                  .Left + .Width * 余白率 / 100, _
>                  .Top + .Height * 余白率 / 100, _
>                  .Width * (100 - (余白率 * 2)) / 100, _
>                  .Height * (100 - (余白率 * 2)) / 100)
>             Shap.Fill.Visible = msoFalse
>             Set Shap = Nothing
>            End If
>          End With
>         End If
>      End With
>    Next
>  End With

【64773】Re:わかりません(図形作成)
お礼  とってぃ E-MAIL  - 10/3/12(金) 16:48 -

引用なし
パスワード
   ▼とってぃ さん:
Jaka さん
ありがとうございました。
無事に動作しました。

>Jaka さん
>すみません。
>ちゃんと伝わっていませんでした。
>1.D11〜D41の間で空白ならそのB列に○(オートシェイプ)を作成する。
>2.作成列に文字がなかったら作成しない。
>例1:D15が空白でB15に文字がある →B15に○を作成する。
>例2:D18が空白でB18に文字がない →B18に○を作成しない。
>です。
>
>▼Jaka さん:
>>▼とってぃ さん:
>>>もう一つ追加したいのですどのようにコードを書けばよいのか教えてください。
>>>With .Cells(i, 4).Offset(, -2)でB列を指定してますが、
>>>そこに空白なら(B列)オートシェイプを作成しない。を追加したいのですが。。
>>提示されたコードを見る限り自分で解決できそうな感じですけど。
>>
>>Dim i  As Long, Shap As Shape
>>Const 余白率 = 15 '余白の割合(%)
>>  With Worksheets("Sheet1")
>>    For i = 11 To 41
>>      With .Cells(i, 4)
>>        If .Value = "" Then
>>          With .Offset(, -2)
>>           '.Select
>>            If .Value <> "" Then
>>             Set Shap = ActiveSheet.Shapes.AddShape(msoShapeOval, _
>>                  .Left + .Width * 余白率 / 100, _
>>                  .Top + .Height * 余白率 / 100, _
>>                  .Width * (100 - (余白率 * 2)) / 100, _
>>                  .Height * (100 - (余白率 * 2)) / 100)
>>             Shap.Fill.Visible = msoFalse
>>             Set Shap = Nothing
>>            End If
>>          End With
>>         End If
>>      End With
>>    Next
>>  End With

3019 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free