中小企業の働き方改革をサポート>>

行事予定表をD列の3行目を1日として右に31日までの日付を作成し
4行目に曜日を関数で自動表示しています。
土日の列幅は自動で2に変更するような関数やマクロがあれば教えてください。
よろしくお願いいたします。

A 回答 (1件)

> 土日の列幅は自動で2に変更するような関数やマクロがあれば教えてください。


ExcelVBAがわかると思っていいのでしょうか?
であれば
------------------------------------------
Const c = 4 '開始Col
Const r = 4 '開始Row
Dim i As Integer
i = c
While Cells(r, i) <> ""
 If (Cells(r, i) = "土") Or (Cells(r, i) = "日") Then
  Range(Cells(r, i), Cells(r, i)).ColumnWidth = 2
 End If
 i = i + 1
Wend
------------------------------------------
いかがでしょう?
    • good
    • 0
この回答へのお礼

早速のご教示、ありがとうございます。
VBAは、初心の初心ですが、ちゃんとできました。
また、よろしくお願いします。

お礼日時:2009/11/13 17:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q土日に加えた日の列幅変更マクロを教えてください。

エクセルで行事入力表を毎月作成しています。
D4からAG4までに1日から31日の日付を入れ、土日は行事がないので、
教えていただいた下のマクロの実行で列幅を縮小しています。
  Sub Macro1()
  Dim idx As Integer
  For idx = 4 To 34
 If Weekday(Cells(4, idx).Value) = vbSunday Or _
  Weekday(Cells(4, idx).Value) = vbSaturday Then
  Columns(idx).ColumnWidth = 1.5
  End If
  Next
  End Sub
これに、お盆や正月の行事のない日(会社の休日)を加えたいのですが、出来るでしょうか。
行事のない日付は、AK4からAK15に予め入力しています。
どなたか、よろしくお願いいたします。

Aベストアンサー

Range("AK4:AK15").Find(Cells(4, idx).Value, LookAt:=xlWhole)
でAK4:AK15の範囲にデータがあるかないか判断できるので、これを条件に付け加えてあげればOKです。

Sub Macro1()
Dim idx As Integer
For idx = 4 To 34
If Weekday(Cells(4, idx).Value) = vbSunday Or _
Weekday(Cells(4, idx).Value) = vbSaturday Or _
Not Range("AK4:AK15").Find(Cells(4, idx).Value, LookAt:=xlWhole) Is Nothing Then
Columns(idx).ColumnWidth = 1.5
End If
Next
End Sub

QExcelにて、列の幅をマクロで変えるには?

今、提出用の資料作成にて、
従業員の稼動実績を記載した表部分を隠して
A3にかたち良く収まるように印刷できるよう列の調整をしようと
マクロの記録を行い、下記のようなプログラムを得ました。
ところが、実行すると("U:AD")の部分は隠れているのですが、
それ以外は全て、列の幅が"20"になってしまいます。
一体どのようにすれば列の幅を記載通りに調整できるのでしょうか?
お教え下さい。宜しくお願いします。

* * * * * * * * * * * * * * * * *

Sub 稼動実績を隠す()
'
' 稼動実績を隠す Macro
' マクロ記録日 : 2007/9/27 ユーザー名 : ########
'

'
Columns("A:M").Select
Range("A2").Activate
Selection.ColumnWidth = 8
Columns("N:O").Select
Selection.ColumnWidth = 16
Columns("P:P").Select
Selection.ColumnWidth = 20
Columns("R:T").Select
Selection.ColumnWidth = 20
Columns("U:AD").Select
Selection.ColumnWidth = 0
Columns("AE:AF").Select
Selection.ColumnWidth = 20
Columns("AG:AG").Select
Selection.ColumnWidth = 8
Columns("AH:AH").Select
Selection.ColumnWidth = 54
Columns("AI:AP").Select
Selection.ColumnWidth = 20
Columns("AQ:AQ").Select
Selection.ColumnWidth = 8
Columns("AR:AS").Select
Selection.ColumnWidth = 20
Range("A2").Select
End Sub

今、提出用の資料作成にて、
従業員の稼動実績を記載した表部分を隠して
A3にかたち良く収まるように印刷できるよう列の調整をしようと
マクロの記録を行い、下記のようなプログラムを得ました。
ところが、実行すると("U:AD")の部分は隠れているのですが、
それ以外は全て、列の幅が"20"になってしまいます。
一体どのようにすれば列の幅を記載通りに調整できるのでしょうか?
お教え下さい。宜しくお願いします。

* * * * * * * * * * * * * * * * *

Sub 稼動実...続きを読む

Aベストアンサー

列幅を数値で指定したい場合は、複数列なら
Columns("A:B").ColumnWidth = 8
また1列なら
Columns(1).ColumnWidth = 8
Range("A1").EntireColumn.ColumnWidth = 8
のように書けばよいです。わざわざセルをSelectする必要はありません

また列幅を自動調整するなら
Columns("A:B").Autotfit
で入力文字に合わせて自動調整します

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルで行の高さの変更マクロの作成

エクセルで各月の行事予定表を作成していますが、各月の初日を特定のセルに入力すると、自動的にその月の日にちと曜日が各セルの上段から下段に表示されるように作成しています。
例えば、セルA1に11/1と入力すると、セルA5からA36までに日付がB5からB36に曜日が表示されるようにし、セルC欄に行事内容を入力する行事予定表としています。
この場合、土曜日曜は休みなので行事が入らないため、その行(土曜日曜の行)の高さをボタンクリックで変更(希望の縮小高さに変更)できるマクロを教えてほしいのです。
また、これについては、他の表作成で、入力の無い行の行高縮小マクロにも利用可能ではと考えてもいます。
マクロの実行ボタンの作成は作成することができます。
ご教示をお願いいたします。

Aベストアンサー

こんな感じでいかがでしょうか?

Sub sample1()
Dim rHeight As Single
Dim i As Integer

rHeight = InputBox("高さを指定してください。", "セルの高さ", 0)

For i = 5 To 36
If Weekday(Cells(i, 1), vbMonday) > 5 Then
Cells(i, 1).RowHeight = rHeight
Else
Cells(i, 1).RowHeight = ActiveSheet.StandardHeight
End If
Next
End Sub

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む


人気Q&Aランキング

おすすめ情報