Excel VBA質問箱 IV

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

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


9493 / 13644 ツリー ←次へ | 前へ→

【26931】工程表について 05/7/23(土) 20:35 質問[未読]
【26935】Re:工程表について M 05/7/24(日) 9:13 回答[未読]
【26976】Re:工程表について 05/7/25(月) 21:06 質問[未読]
【26984】Re:工程表について M 05/7/25(月) 23:00 回答[未読]
【26987】Re:工程表について 知ろう途 05/7/26(火) 0:03 発言[未読]
【26989】Re:工程表について 知ろう途 05/7/26(火) 0:15 発言[未読]
【27026】Re:工程表について 05/7/26(火) 18:47 お礼[未読]

【26931】工程表について
質問    - 05/7/23(土) 20:35 -

引用なし
パスワード
   こんばんわ

早速質問させて頂きます。

範囲が7列目の6行目から68列目の115行目迄で
偶数行に計画線(テキストボックス)
奇数行に実施線(テキストボックス)
を下記のUserFoamにて書いています。

Private Sub CommandButton1_Click()

 Dim 文字色, 塗色 As Integer
 Dim N1 As Variant
 
 Dim xa, xb, ya, yb As Long
   xa = Selection.Left
   xb = Selection.Width
   ya = Selection.Top
   yb = Selection.Height
  
  If OptionButton1.Value = True Then
    塗色 = 8
   ElseIf OptionButton2.Value = True Then
    塗色 = 2
   ElseIf OptionButton3.Value = True Then
    塗色 = 3
   ElseIf OptionButton4.Value = True Then
    塗色 = 4
   ElseIf OptionButton5.Value = True Then
    塗色 = 5
   ElseIf OptionButton6.Value = True Then
    塗色 = 6
   ElseIf OptionButton7.Value = True Then
    塗色 = 7
   ElseIf OptionButton8.Value = True Then
    塗色 = 1
  End If
  
  If OptionButton9.Value = True Then
    文字色 = 1
   ElseIf OptionButton10.Value = True Then
    文字色 = 3
   ElseIf OptionButton11.Value = True Then
    文字色 = 5
   ElseIf OptionButton12.Value = True Then
    文字色 = 2
  End If
  
  ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, xa, ya, _
    xb, yb).Select
  Selection.Characters.Text = TextBox1.Value
  
  With Selection.Font
    .Name = "MS Pゴシック"
    .FontStyle = "標準"
    .Size = 9
    .Strikethrough = False
    .Superscript = False
    .Subscript = False
    .OutlineFont = False
    .Shadow = False
    .Underline = xlUnderlineStyleNone
    .ColorIndex = 文字色
  End With
  With Selection
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
    .ReadingOrder = xlContext
    .Orientation = xlHorizontal
    .AutoSize = False
    .AddIndent = False
  End With
  Selection.ShapeRange.Fill.Visible = msoTrue
  Selection.ShapeRange.Fill.Solid
  Selection.ShapeRange.Fill.ForeColor.SchemeColor = 塗色
  Selection.ShapeRange.Fill.Transparency = 0#
  Selection.ShapeRange.Line.Weight = 0.75
  Selection.ShapeRange.Line.DashStyle = msoLineSolid
  Selection.ShapeRange.Line.Style = msoLineSingle
  Selection.ShapeRange.Line.Transparency = 0#
  Selection.ShapeRange.Line.Visible = msoTrue
  Selection.ShapeRange.Line.ForeColor.SchemeColor = 64
  Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)
  
End Sub
Private Sub CommandButton2_Click()
Unload UserForm4
End Sub

それで、やりたいことは

奇数行の実施線(テキストボックス)のプロパティの『オブジェクトを印刷する』のチェックをはずしたり付けたりして印刷したいのです。

又、範囲内には計画線・実施線とも引いていない行もあります。

説明が下手ですいませんが、よろしくお願いします。

【26935】Re:工程表について
回答  M  - 05/7/24(日) 9:13 -

引用なし
パスワード
   ▼吉 さん:

おはようございます。

工程表のイメージが今ひとつ分かりませんが・・・

計画と実行(実施)された表で、「全て印刷する」と
偶数行の(実施)のみの「偶数行印刷」をしたいということでしょうか。

また、フォームの状況も一応見させていただきましたが、
大まかしか分かりませんので・・・
あくまでチェック1にチェックを入れると「偶数行のみの」また
チェック2にチェックを入れると「全て」の区分をさせました。

とりあえずコードは「.Select」で止めています。
そこまでのコードを書いておきます。
セルの空きも全て選択します。
後は、アレンジしてください。

Private Sub CheckBox1_Click()
 Dim i As Integer
 For i = 7 To 115 Step 2
 Rows(i).EntireRow.Hidden = True
 Next
 Range(Cells(6, 7), Cells(115, 68)).SpecialCells(xlCellTypeVisible).Select
End Sub
Private Sub CheckBox2_Click()
 Dim i As Integer
 For i = 7 To 115 Step 2
 Rows(i).EntireRow.Hidden = False
 Next
 Range(Cells(6, 7), Cells(115, 68)).Select
End Sub

印刷の範囲等の条件等は吉さんの方でないと、分からないと思いますので。
今のままですと偶数行(実施)を選択すると天地の高さが半分になります。
後はよろしく・・・

【26976】Re:工程表について
質問    - 05/7/25(月) 21:06 -

引用なし
パスワード
   ▼M さん:

こんばんわ。

返事、遅くなりましてすいませんでした。

>工程表のイメージが今ひとつ分かりませんが・・・

説明不足ですいませんです。

工程表はバーチャートと形式で書いています

1   工種   種別   数量   単位  7月1日 7月2日 7月3日 7月4日
2  道路土工 掘削   100    m3  [==]
3        機械             [==]
4  擁壁工  基礎   20    m       [==]
5        t=100               [==]
6       型枠   35    m3         [====]
7                                [====]

と、上記のように偶数行に計画線、奇数行に実施線をテキストボックスに内容を表示させて書いています。

それで、奇数行を非表示にするのではなく、

奇数行に書かれているテキストボックスのプロパティを

印刷しないように設定して印刷、また、印刷するように設定して印刷

させたいのです。

自分なりには考えてみたのですが、さっぱり分からなくて質問させて頂きました。

ご教授をよろしくお願いします。

【26984】Re:工程表について
回答  M  - 05/7/25(月) 23:00 -

引用なし
パスワード
   ▼吉 さん:
今晩は・・・
大体のイメージが分かりました。

>工程表はバーチャートと形式で書いています

バーチャートがどのようなものか少し分かりかねますが・・・
印刷をさせない?っという発想ではなく、
偶数なり、奇数なりの行の文字を一旦クリアさせて印刷する
ということです。
もし、バーチャートに色がついていたら、色を外す必要が
あれば外す、残すのであれば残す・・・というように考えては
如何でしょう。

文字のみを消すコードを書いておきます。
奇数・偶数や列幅は決めて下さい。
サンプルは、3行目から15行目まで、7列から10列の幅で
一旦文字をクリアします。その状態で印刷をかけるのです。

Sub 印刷行の指定()

Dim i As Integer

For i = 3 To 15 Step 2

Range(Cells(i, 7), Cells(i, 10)).ClearContents

Next

'印刷エリア設定⇒印刷

End Sub

試してみてください。

【26987】Re:工程表について
発言  知ろう途  - 05/7/26(火) 0:03 -

引用なし
パスワード
   吉 さんこんばんわです。

余談ですが。。まさか同業者の方が全く同じ時期に工程表を作っているとは
思ってもみなかったです!
私はセルを思いっきり細くして色を塗る方法で作っていて、後はそのセルの
範囲から進捗率を求め、工事履行報告書を作る段階です。

ところで大したアドバイスも出来ませんが気になった点をいくつか。。

> Dim 文字色, 塗色 As Integer
なんですが文字色もInteger型ですよね?
上記の場合だと文字色はVariant型になってしまいます。
Dim 文字色 As Integer, 塗色 As Integer

>奇数行の実施線(テキストボックス)のプロパティの『オブジェクトを印刷する』のチェックをはずしたり付けたりして印刷したいのです。
マクロの記録によれば。。
  ActiveSheet.Shapes("Text Box 1").Select
  With Selection
    .Placement = xlMove
    .PrintObject = True
  End With
となりましたので。。
Sub Macro1()
 Dim TextShapes As Shape
 
  For Each TextShapes In ActiveSheet.Shapes
   If Left(TextShapes.Name, 4) = "Text" Then
   If Right(TextShapes.Name, 2) Mod 2 = 1 Then
    TextShapes.Name.Select
    With Selection
    .PrintObject = False
    End With
   End If
   End If
  Next

End Sub
こんな感じでどうでしょうか?
あくまで実績の方のテキストボックスの名前が奇数であると仮定してますです。

あとはもし私が作る場合ですとA1でも隠しセル
(セルの書式→表示形式→ユーザー定義→;;;)にして
If [A1].Value = 1 Then とかを先頭に加えたら完成?です。

チェックボックスとかややこしいのは避けるタイプでして。。
がんばってみてくだされ。

【26989】Re:工程表について
発言  知ろう途  - 05/7/26(火) 0:15 -

引用なし
パスワード
   失礼しますたです。
 ×  TextShapes.Name.Select 
 ○  TextShapes.Select

【27026】Re:工程表について
お礼    - 05/7/26(火) 18:47 -

引用なし
パスワード
   ▼M さん:
▼知ろう途 さん:

良いアドバイス、ありがとうございました。

これからもよろしくお願いします。

追伸

 知ろう途さんの、セルの範囲を進捗率に持っていく・・・『なるほど』

 と思いました、暇なときがあったら作ってみようと思います。

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