• ベストアンサー

エクセル VBA 空白を無くしたい

SHEET1にて、チェック式を作成。チェックした項目のみ記録ボタンでsheet2に記録させる物を作りました。しかし項目がありすぎてチェックしていない時は空白が目立ち使いづらいです。この様にしたいのですが出来ますか? A  B  C ・・・・・・・・・L  N  M 使用 ○ 実施 空白が続く  機械 油田 油 この空白が出来ないよう、左に詰めるように記録したいのですが出来ますか?マクロの記述を教えてください。もし空白なら左に詰めて記録できるようにしたーいです。教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.4

onlyromです。 >Next R >End With >End Sub ●>.Range("B" & LastRow).Value = Worksheets("Sheet1").Range("A6").Value >{End Sub,End Function または End Property 以降には、コメントが記述できます。}と表示され ●のところでそのエラーが出るのは当然のことです。 ●の1行上が、End Sub になってますからそこでプログラムが終了になりますから、●以下にはコメントしか書けません。 当方が回答したコードには、●のコードはありませんよね。 ●のコードは一体、何の為にあるのでしょうか。 回答したコードは先に質問者がお礼の欄に書いたコードの代わりですから、 質問者のコードは全てボツにして、当方のコードのみで実行してください。  

pop2003
質問者

お礼

ありがとうございました。何度もすいませんでした。実施しましたがA6以降の文字が全て白紙になってしまいました。自分の説明不足です。そこで良かったら、pop2003dayo@ でヤフーの@yahoo.co.jpを後ろにつけメールに返事を書いて欲しいです。なぜかと言いますと実際のエクセルを見て欲しいのです。本当に完成させたいと思っております。どうかお願いします。

その他の回答 (3)

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.3

またまた登場、onlyromです。 まだ不明の点が多いのですが、お礼の蘭に提示されたコードのみに修正を加えてみました。 '--------------------------------------------- Sub 入力()   Dim R As Long   Dim Clm As Long Dim LastRow As Long With Worksheets("Sheet2")  LastRow = .Range("A65536").End(xlUp).Offset(1, 0).Row  .Range("A" & LastRow).Value = LastRow - 1    Clm = 1  For R = 6 To 21   If (R >= 6 And R <= 10) Or R = 12 Or R = 13 _     Or R = 15 Or R = 16 Or R = 19 Or R = 21 Then     If Sheets("Sheet1").Cells(R, "A").Value <> "" Then       Clm = Clm + 1       .Cells(LastRow, Clm) = Sheets("Sheet1").Cells(R, "A").Value     End If   End If  Next R End With End Sub '----------------------------------------------- お試しください。  

pop2003
質問者

お礼

早速のお返事ありがとうございます。実際に記述しました。しかし 下の(”A6”)に色が変わりエラー表示されます。内容は、{End Sub,End Function または End Property 以降には、コメントが記述できます。}と表示され、エラーの回避ができません。何が原因なのでしょうか?本当にすいません、教えてください。 :: Next R End With End Sub .Range("B" & LastRow).Value = Worksheets("Sheet1").Range("A6").Value

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.2

>是非、教えてください。 頑張っている人にできる限りのことをしてあげたいとは思いますが、 いかんせん、情報不足ゆえ回答のしようがありません。 >sheet1に関してはチェックボックスの横にコンボボックスを作成しています。 >チェックが付いていたら、trueとしてコンボボックスに表示されたものを入力ボタンで、sheet2に記録させるようにしています。 Sheet1には、CheckBox、ComboBox、CommandButtonがそれぞれ一つしかないのですか? そして、CheckBoxがOnの時、CommandButtonをクリックして、ComboBoxで選択されてる項目をSheet2に転記させると書いてありますが、 なら、質問の >項目がありすぎてチェックしていない時は空白が目立ち使いづらい >空白なら左に詰めて記録できるようにしたーいです これは矛盾するのではありませんか? なぜなら、 >チェックが付いていたら、trueとしてコンボボックスに表示されたものを入力ボタンで、sheet2に記録させるようにしています。 このように「チェックが付いていたら」即ち、「チェックがされていたら」、記録させるようにしているわけですから。 そこら辺りのことを実際に沿った形で、セルアドレスも含めもっと詳しく提示すべきだと考えます。   乗りかかった船ですので解決までお付き合いしませう。  

pop2003
質問者

お礼

ありがとうございます。本当に感謝しております。自分もマクロの勉強を始めたばっかりで非常に困っています。仕事で使いたいと思い勉強を始めました。最初はマクロは一つで対応していたのですが、やりたい事がいっぱいあったのでこの間みたいな、フォームで簡略化したかったのですがもう少し勉強してからしようと思っています。是非最後までお付き合いしてください。 Sheet1には、CheckBox、ComboBox、CommandButtonはいっぱいあります。下記が実際の記述です。チェックする項目は14個の内1個だけでいいのですが、あまりにも空白が多く困っています。だから、フォームを作って選択出来るように作りたかったのですが・・残念です。是非お願いします。 Sub 入力() Dim LastRow As Long With Worksheets("Sheet2") LastRow = .Range("A65536").End(xlUp).Offset(1, 0).Row .Range("A" & LastRow).Value = LastRow - 1 .Range("B" & LastRow).Value = Worksheets("Sheet1").Range("A6").Value .Range("C" & LastRow).Value = Worksheets("Sheet1").Range("A7").Value .Range("D" & LastRow).Value = Worksheets("Sheet1").Range("A8").Value .Range("E" & LastRow).Value = Worksheets("Sheet1").Range("A9").Value .Range("F" & LastRow).Value = Worksheets("Sheet1").Range("A10").Value .Range("G" & LastRow).Value = Worksheets("Sheet1").Range("A12").Value .Range("H" & LastRow).Value = Worksheets("Sheet1").Range("A13").Value .Range("I" & LastRow).Value = Worksheets("Sheet1").Range("A15").Value .Range("J" & LastRow).Value = Worksheets("Sheet1").Range("A16").Value .Range("K" & LastRow).Value = Worksheets("Sheet1").Range("A19").Value .Range("L" & LastRow).Value = Worksheets("Sheet1").Range("A21").Value

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.1

チェック式、とはどんな式????? せめてSheet1のレイアウトぐらいは提示しないと。。 それから、どうでもいいことですが、 http://oshiete1.goo.ne.jp/qa3315484.html これは解決済み???? ひとつずつ解決した方がベターなのでは?    

pop2003
質問者

お礼

アドバイスありがとうございます。sheet1に関してはチェックボックスの横にコンボボックスを作成しています。チェックが付いていたら、trueとしてコンボボックスに表示されたものを入力ボタンで、sheet2に記録させるようにしています。 是非、教えてください。

関連するQ&A

専門家に質問してみよう