[[20050316115251]] 『同じ作業を繰り返すしかない?』(じぇね) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『同じ作業を繰り返すしかない?』(じぇね)

 コントロールツールのチェックボックスを使って、
チェックを入れた行は計算する、そうでない行は計算しない
というシートを作りたいと思っています。

 VBAが良く分からないので関数を使ってやってみました。

 1列目にチェックボックス貼り付け
 2列目はチェックボックスとリンクさせるセル
 3列目に商品名入力
 4列目に商品単価入力
 5列目に個数入力
 6列目に小計表示(2列目が真の場合計算結果表示、偽の場合0を表示)

 と、やりたいことは一応できたのですが・・・

 チェックボックスをセルとリンクさせる作業がとても面倒です^^;
セルに名前をつけてチェックボックスのプロパティでリンクさせるという処理を
1行ごとに繰り返さなくてはなりません。

 通常の書式のようにコピー&ペーストで処理できないのでしょうか?
そうでなくとも、簡単に処理する方法があれば知りたいです。


 何個くらいチェックボックスを使うのでしょうか?
 Sheetとコントロールツールボックスは相性があまりよくないので、 
 多用するなら別の方法を考えた方がよいです。
  (INA)


 30行くらいの範囲で考えてます。
 つまりチェックボックスも30個ほど・・・
 1行目は無しで、2行目は直接入力&数字の「1」と「0」で
 入力規制をかけて真偽の判断という方法も考えたのですが、
 チェックボックスのが綺麗な感じがしたのでそっちでやってみようかと。

 やはり相性悪いんですか^^;
 諦めるしかないんでしょうか?(じぇね)


 まあ不具合がでる恐れがあることをふまえて使用するなら良いと思います。
 ファイルサイズが大きくなるのが欠点ではありますが。

 >セルに名前をつけてチェックボックスのプロパティでリンクさせるという
 名前を付ける必要はないですよ。セル番地だけで。

 フォームのチェックボックスならマクロでできます。

 Dim i As Long
 Dim c As Object    
   i = 1
   For Each c In Worksheets("Sheet1").CheckBoxes
        c.LinkedCell = Cells(i, 1).Address(0, 0)
        i = i + 1
   Next c 

   (INA)

マクロとかVBAの話になると理解できません。
「それくらい自分で勉強しろ」と言われそうですが、具体的にどうすれば良いのか
書いてくださる方がいるとありがたいです^^;(じぇね)


 私はそんなこと書いていません。
 でも 
 >「それくらい自分で勉強しろ」と言わずに
 勉強する気がないなら回答しません。ここは「学校」ですから。

 あなたのレベルがどのくらいかも分からないのに、
 掲示板で一から教えさせるようなことを、
 ボランティアの回答者に強いるのは如何なものかと思います。
 (INA)

 INAさんINAさん、落ち着いてください。
「強いる」だなんて、スレ主さんも「そんなこと書いていません」でしょう?
「書いてくださる方がいるととありがたい」としか。

 過去ログもずいぶん読みましたし
INAさんの「マクロ制作まるなげ依頼」に対しての疑念等、理解しているつもりですし
私も「〜〜したいのですが」で終わってしまう
質問ともいえないような質問文に「すれば?」と返したくなる年寄りですが
そういう時は「私はパスさせていただきます」だけで良いのではないかと。
それが繰り返されれば、スレ主さんも自分の実力範囲の中で諦めるなり
自分の表現がまずかったのかなと反省するなりなさるでしょう。
それで十分ではないのでしょうか?
(る〜)

人任せは良くないとはわかっているのですが・・・^^;
すみませんでした;;

よくある質問のVBA体験winの手順を参考にVBA作成してみました。

sub マクロ名()
 (INAさんが書いてくださった内容)
end sub

というマクロを作り、セルA1で実行してみました。
しかし何も起こりません・・・
何か間違ったことをしているのでしょうか?
ちなみに、チェックボックスはまだ貼り付けていません。
貼り付けてからの作業になるのでしょうか・・・?(じぇね)


 >チェックボックスはまだ貼り付けていません。
 >貼り付けてからの作業になるのでしょうか・・・?
 そうです。
 対象がなければ処理できませんので。

 コントロールツールボックスにするのか
 フォームにするのか、どちらを採用したのか不明ですが・・・

 1.フォームのチェックボックスを使う。
     →前に載せたマクロで設定可能

 2.コントロールツールボックスを使う
     →ループ処理できないので冗長になりますが・・・

 Sub Sample()
    With Worksheets("Sheet1")
        .CheckBox1.LinkedCell = "B1"
        .CheckBox2.LinkedCell = "B2"
        .CheckBox2.LinkedCell = "B3"
        .CheckBox2.LinkedCell = "B4"
        .CheckBox2.LinkedCell = "B5"   
         '以下同じように書く
         ' :  
    End With
 End Sub
 

 ps.る〜さん ごめんなさい。
   (INA) 


フォームのチェックボックスを作成し、INAさんのマクロを実行したところ
無事処理に成功しました!^^ 感動です。

どうもありがとうございました。

エクセルはまだまだ奥が深いですね〜。
これからも壁に行き当たったらこのサイトを利用させてもらうつもりです。

その時はぜひまたよろしくお願いします^^

P・S 文字が小さくなりませんw (じぇね)


 ありゃ、衝突しました。以下衝突前の文章です。
記録してちょっと、作ってみました。
シートの見出しを右くりっく→コードを表示させてそこに貼り付けます。。。
A列でダブルクリックしてみてください。。。
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column <> 1 Then Exit Sub
Cancel = True
With Target
    With Me.CheckBoxes.Add(.Left, .Top, .Width, .Height)
        .Characters.Text = ""
        .Value = xlOff
        .LinkedCell = Target.Offset(, 1).Address
        .Display3DShading = False
    End With
End With
End Sub
ちなみに
 >P・S 文字が小さくなりませんw (じぇね)
 は、半角のスペースを空けるといいですよ。
(SoulMan)

 できました。すごい!ありがとうございます^^
このマクロ、少しいじればA列以外にも同じように指定できるんでしょうか?
そして、同一行に複数列指定するようなことも可能なのでしょうか?
よろしければ教えてください。

 今後はコードの意味まで理解できるようにがんばります^^;;

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.