- ベストアンサー
SpreadDesignerの列ヘッダ
いつもお世話になっております。 スプレッドシートの列ヘッダを固定表示(ロック)したいのですが、うまくいきません。 ヘッダをクリックしてコピーをすると、選択した列のコピーをして、同じように他の列を選択して張り付けるとヘッダまで編集されてしまいます。 そのために With Spread .BlockMode = True .Col = -1 .Col = 0 .Lock = True .BlockMode = False End With としていますが、ヘッダ部分ではなくセル自体にロックがかかってしまいます。 ヘッダは編集不可にして、セルは編集可能にしたいのですが、コードで設定できるでしょうか? プロパティからでもできるのであれば、どのような方法がありますでしょうか? お分かりの方、お教え願います。
- LipTrek
- お礼率73% (19/26)
- Visual Basic
- 回答数6
- ありがとう数9
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
度々、すみません。 「スプレッドシートの動作環境」の、「クリップボードの動作」で、「両ヘッダのコピーと貼付けなし」を選択してください。
その他の回答 (5)
- Azzuri
- ベストアンサー率68% (34/50)
#4ですが、おっしゃることが分かりました。 #3の言われるように、列選択をさせない方法がよいと思います。 何度も申し訳ありませんでした。
お礼
何度も回答をいただき、ありがとうございます。 私の説明不足のためよく伝わらなかったようです。すいません。
- Azzuri
- ベストアンサー率68% (34/50)
スプレッドの既定のヘッダは、ロックするしないの設定ができないと思うのですが・・・。 SPREAD6.0の場合は、不可能です。 先ほども言いましたが、既定のヘッダではなく、セルをヘッダに見立てて使用するということでしょうか。 その場合、ヘッダにラベル型を使用すれば問題ないと思います。
- CupNaka
- ベストアンサー率22% (13/57)
#1です。 範囲付けでロックは(私は)できないので、列自体を選択できない方法を… ・画面でスプレッド右クリックで「SpreadDesigner」をクリック。 ・デザイナー画面の全般→スプレッドシートの動作環境を選択。 ・選択モードタブで、選択可能な範囲の列全体チェックを外すと列選択できなくなります。 同じように行や全選択のチェックも外せます。 選択が出来ないので、コピーも出来ないかと思います。 ちなみに私はVB6のspread3を使用してます。
お礼
なるほど! たしかに選択できなければ、コピーも貼り付けもできませんからね。 この方法でやらせていただきます。 ありがとうございます。
- Azzuri
- ベストアンサー率68% (34/50)
ヘッダは編集出来ないと思うのですが、言われているのは、ラベルをヘッダとして表示する場合のことでしょうか。 その場合、列を選択してロックした後でラベルの行のロックを解除します。
補足
言い方が悪かったので訂正します。 ヘッダの編集というのは、A列全体を選択してコピーし、B列全体を選択して貼り付けをすると、B列ヘッダがAとなってしまいます。 もちろんセルの値も変更します。 ですが、ヘッダをロックしたはずなのにヘッダは変更されますが、セルの値はロックされてしまい変更しなくてなってしまうのです。
- CupNaka
- ベストアンサー率22% (13/57)
Col = -1 Col = 0 だから範囲選択されてないんでは? With Spread .BlockMode = True .Col = -1 .Row = 0 .Lock = True .BlockMode = False End With としてみてはどうですか?
補足
すいません。記述ミスでしたf(^_^;) でも、それでも編集できてしまいます。
関連するQ&A
- SPREADの行の削除
VB6.0 SPREAD3.0 OS:2000 SPREADでカレント表示した行を削除ボタンを押したら 削除したいのですがやり方がうまくわかりません。 クリックしたらカレント表示 Private Sub oSpmain_Click(ByVal Col As Long, ByVal Row As Long) With oSpmain .ReDraw = False .Row = -1: .Col = -1: .BackColor = vbWhite .ForeColor = RGB(255, 300, 0) .BlockMode = True .Row = Row: .Row2 = Row .Col = 1: .Col2 = .MaxCols .BackColor = .ForeColor .ForeColor = vbWhite Xor .ForeColor .BlockMode = False .ReDraw = True End With End Sub ここまではできたのですが、削除が思うようにできません。アドバイスお願いします。
- ベストアンサー
- Visual Basic
- 選んだ行の削除
VB6.0 SPREAD3.0 SPREADで何行か表示している時に削除したい行をクリックし、その行に色(黄色)をつけ、その色のついた行を削除ボタンを押したら削除する・・・という仕様にしたいと思っております。 そして以下のように書いてみたのですが、問題があり、 (1)クリックした行の色が変わると同時に何故だか最終行の文字の色が黄色に変わってしまう。 (2)例えば一行目をクリックしてから3行目をクリックすると一行目の文字の色が黄色になってしまい、もとに戻らない。 (3)行を選択しないまま削除ボタンを押すと下から順に行が削除されてしまう。 という3つの問題があり、解決できないでいます。 なにかアドバイスがありましたらよろしくお願いします。 '---クリックした行の色を反転--- Private Sub spread_Click(ByVal Col As Long, ByVal Row As Long) With oSpmain .ReDraw = False .Row = .Row: .Col = -1: .BackColor = vbWhite .ForeColor = RGB(255, 300, 0) .BlockMode = True .Row = Row: .Row2 = Row .Col = 1: .Col2 = .MaxCols .BackColor = .ForeColor .ForeColor = vbWhite Xor .ForeColor .BlockMode = False .ReDraw = True End With End Sub '---削除ボタン--- Private Sub sakujyo_Click() With spread .BlockMode = True .Action = ActionDeleteRow .BlockMode = False .MaxRows = .MaxRows - 1 End With End Sub
- ベストアンサー
- Visual Basic
- ヘッダ内の表をマクロ(VBA)で指定する方法
あるテンプレートからマクロで表内のセルに文字列を挿入しています。 Set newdoc = Application.Documents.Add("雛型.dot", False, wdNewBlankDocument, True) With newdoc.Tables(1) .Cell(1, 1).Range.Text = hensu1 .Cell(3, 1).Range.Text = hensu2 End With 現在は、上記のようなコードで、本文内の表に文字列をセットしていますが、この表をヘッダ領域に移動すると動きません。 ヘッダ領域内の表をマクロから指定する方法を教えてください。
- ベストアンサー
- その他MS Office製品
- 特定の列・行をテキストファイルに保存させたい
VB6.0とSPREAD6.0で スプレッドシート内のデータをCSVファイル化させるプログラムを組んでいます Private Sub Command1_Click() Dim blnCHECK As Boolean Dim strMsg As String Dim strDate As String Dim lngResponse As Long Dim ret As Boolean strDate = Format(Now(), "yyyymmddhhmmss") 'ファイル名 With spdTarget 'スプレッドシート .Row = 1 While .Row <= .MaxRows .Col = LNG_SPD_COL_CHECK 'チェックボックス If .Value <> 0 Then blnCHECK = True strMsg = "選択データをファイル作成しますか?" lngResponse = MsgBox(strMsg, vbQuestion + vbYesNo, "Exit Dialog") If lngResponse = vbYes Then ret = spdTarget.ExportToTextFile _ ("C:\Documents and Settings\ファイル作成先\" & strDate & ".csv", "", _ ",", Chr(13), ExportToTextFileColHeaders + _ ExportToTextFileCreateNewFile, _ "C:\Documents and Settings\ファイル作成先\" & strDate & ".log") Else Exit Sub End If End If .Row = .Row + 1 Wend End With If blnCHECK = False Then MsgBox "作成対象データを選んで下さい", vbExclamation End If End Sub 上記のコードだと表内の全てのデータをCSVファイル化させる事はできるのですが 特定の行(1列目のチェックボックスで指定)や特定の列のみを選択してファイル化させる といった動きにさせるには、どうしたら良いのでしょうか?
- ベストアンサー
- Visual Basic
- エクセルマクロで列を削除したい
エクセル2013です。 マクロの途中で列を削除するようにしてあります。 A列~J列、N列~Q列、T列~U列、W列~Y列を一括削除なのですが A列~J列だけは、作業者が選択した1列だけを残して削除をしたいです。 マウスで選択させて、列を指定する所までは作成できましたが 列削除の部分(★の部分)が 思うように作成できず完成できません。 アドバイスをお願いいたします。 Sub 列削除() Dim マウス選択 Dim 選択列 Dim 選択月表示 Dim 質問 On Error GoTo myError 'INPUT-BOXでキャンセルを選択した時の回避 Set マウス選択 = Application.InputBox("回覧用に編集したい月の列を選択してください", Type:=8) If マウス選択.Columns.Count > 1 Then '選択したしたのが列で有り1列であるか確認 MsgBox "選択したのは列ではありません。又は2列以上を選択しています" MsgBox "プログラムを中断します" Application.DisplayAlerts = False Application.DisplayAlerts = True Exit Sub 'プログラム停止 End If If マウス選択.Rows.Count > 1 Then '選択したのが行又はセルの場合の処理 Else MsgBox "行又はセルを選択しています。1列を選択してください" MsgBox "プログラムを中断します" Application.DisplayAlerts = False Application.DisplayAlerts = True Exit Sub 'プログラム停止 End If Set マウス選択 = マウス選択.EntireColumn Debug.Print マウス選択.Address 選択列 = マウス選択.Column 'INPUT-BOXで選択した列を数字に置き換える 選択月表示 = Cells(2, 選択列).Value '選択した列の8行目のセルの値を格納 If 選択列 > 10 Then '選択したのが11列以上の場合の処理 MsgBox "11列目以降は選択できません" MsgBox "プログラムを中断します" Application.DisplayAlerts = False Application.DisplayAlerts = True Exit Sub 'プログラム停止 End If 質問 = MsgBox("選択した月は " & 選択月表示 & " です。いいですか?", vbYesNo) If 質問 = vbYes Then MsgBox "処理を行います" '不要列削除 ★ Union(Columns("A:J"),Columns("N:Q"), Columns("T:U"), Columns("W:Y")).Delete Else MsgBox "プログラムを中断します" Application.DisplayAlerts = False Application.DisplayAlerts = True Exit Sub 'プログラム停止 End If Exit Sub 'エラーが出なかった時のmyErrorの回避用 myError: 'INPUT-BOXでキャンセルを押した時の処理 MsgBox "キャンセルが押されました。プログラム終了します。" Application.DisplayAlerts = False Application.DisplayAlerts = True Exit Sub End Sub
- ベストアンサー
- Excel(エクセル)
- セル結合と列挿入
マクロの記録を使い書いて見ましたが、1行置きに3行挿入し 、A2:A5 , B2:B5 ,C2:C5 ,D2,D5 言う感じでセル結合を5000行まで行い、最後にD、E列、列の挿入したいのですが、どのように書けば宜しいでしょうか? すでに、データが入っています。 Sub Macro1() Rows("3:5").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Rows("7:9").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range("A2:A5").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Selection.Merge Range("B2:B5").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Selection.Merge Range("C2:C5").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Selection.Merge Range("A6:A9").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Selection.Merge Range("B6:B9").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Selection.Merge Range("C6:C9").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Selection.Merge Columns("D:E").Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Selection.ColumnWidth = 18.88 Range("A2:A5").Select End Sub
- ベストアンサー
- Visual Basic
- ヘッダーの編集でフォントの設定をした場合は
マクロの記録で ページ設定→ヘッダーフッター→ヘッダーの編集でフォントの設定をした場合は この設定のマクロの記録は取れないのでしょうか? マクロの記録の結果を見ても Sub Macro1() ' ' Macro11 Macro ' ' Application.PrintCommunication = False With ActiveSheet.PageSetup .PrintTitleRows = "" .PrintTitleColumns = "" End With Application.PrintCommunication = True ActiveSheet.PageSetup.PrintArea = "" Application.PrintCommunication = False With ActiveSheet.PageSetup .LeftHeader = "" .CenterHeader = "あああ" .RightHeader = "" .LeftFooter = "" .CenterFooter = "" .RightFooter = "" .LeftMargin = Application.InchesToPoints(0.590551181102362) .RightMargin = Application.InchesToPoints(0.590551181102362) .TopMargin = Application.InchesToPoints(0.78740157480315) .BottomMargin = Application.InchesToPoints(0) .HeaderMargin = Application.InchesToPoints(0) .FooterMargin = Application.InchesToPoints(0) .PrintHeadings = False .PrintGridlines = False .PrintComments = xlPrintNoComments .PrintQuality = 600 .CenterHorizontally = False .CenterVertically = False .Orientation = xlPortrait .Draft = False .PaperSize = xlPaperA4 .FirstPageNumber = xlAutomatic .Order = xlDownThenOver .BlackAndWhite = False .Zoom = 100 .PrintErrors = xlPrintErrorsDisplayed .OddAndEvenPagesHeaderFooter = False .DifferentFirstPageHeaderFooter = False .ScaleWithDocHeaderFooter = True .AlignMarginsHeaderFooter = True .EvenPage.LeftHeader.Text = "" .EvenPage.CenterHeader.Text = "" .EvenPage.RightHeader.Text = "" .EvenPage.LeftFooter.Text = "" .EvenPage.CenterFooter.Text = "" .EvenPage.RightFooter.Text = "" .FirstPage.LeftHeader.Text = "" .FirstPage.CenterHeader.Text = "" .FirstPage.RightHeader.Text = "" .FirstPage.LeftFooter.Text = "" .FirstPage.CenterFooter.Text = "" .FirstPage.RightFooter.Text = "" End With Application.PrintCommunication = True End Sub で、フォントの設定は見当たりません。
- 締切済み
- オフィス系ソフト
- VBのスプレッドシートについて
VBのフォーム上にスプレッドシートをとりこみ、 ボタンをクリックすると、アクティブになっている 行を削除したいです。 スプレッドシートではデザイナで、事前に単一選択を選んでおき、1行単位でアクティブになるように設定しています。 スプレッドシートのヘルプを参考に、 Private Sub Command1_Click() With vaSpread1 .Row = ActiveRow .BlockMode = False .Action = SS_ACTION_DELETE_ROW .BlockMode = True End With End Sub このように記述したのですが、 うまくいきません。 処理は通るだけで、行の削除がされません。 何が原因なのでしょうか?お願いします。
- 締切済み
- Visual Basic
- DataGridViewのヘッダー見出しのセンター寄せ
VB.NET2005でDataGridViewを使用します。 各セルは書式設定できるのですが、ヘッダーは色設定などは出来ますが、 ヘッダー部のみテキストのセンターよせが出来ません。 どなたかお助けください。 'GRIDのとこのソース With Me.ComDataGridView1 .EnableHeadersVisualStyles = False .RowCount = 100 .DefaultCellStyle.BackColor = 色 .RowsDefaultCellStyle.BackColor = 色 .AlternatingRowsDefaultCellStyle.BackColor = 色 End With
- ベストアンサー
- Visual Basic
- マクロのWEBデータの取り込み
下のように書いてマクロを実行したのですが(EXCEL2003) Sheet1のA1からDP1000のデータをクリアにしてから URLのデータを取り込んで D列の最終行の値を Sheet2のA列の日付+1行に書き込みたいのですが Sheet1のA1からDP1000のデータをクリアにする前に D列の最終行の値を Sheet2のA列の日付+1行に書き込んでしまいます。 あとConst Col = 4の部分が 同じ範囲内で宣言が重複しています。 とエラーになります。 どこが悪いのかがわかりません。 よろしくお願いします。 Sub 抽出() Worksheets("Sheet1").Range("A1:DP1000").Value = "" nen = InputBox("読み込む年度、西暦4桁(半角)読み込む月(半角)を入力") tuki = InputBox("読み込む日(半角)を入力") strUrl= "URL;http://○○○○★★★★DATFR=#01&DATTO=#$&MSCD=1431&BMCD=30&MENU_ID=2&MENU_ID1=2" strnen = Mid(Str(nen), 2) strtuki = Mid(Str(tuki), 2) strUrl = Replace(Replace(strUrl, "$", strtuki), "#", strnen) strName = Replace(Replace(strName, "$", strtuki), "#", strnen) With Worksheets("野菜").QueryTables.Add(Connection:=strUrl, Destination:=Worksheets("Sheet1").Range("A1")) .Name = strtuki .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .WebSelectionType = xlEntirePage .WebFormatting = xlWebFormattingNone .WebPreFormattedTextToColumns = True .WebConsecutiveDelimitersAsOne = True .WebSingleBlockTextImport = False .WebDisableDateRecognition = False .WebDisableRedirections = False .Refresh BackgroundQuery:=True End With Const Col = 4 Dim Rw As Long With Sheets("Sheet1") Rw = .Cells(Rows.Count, Col).End(xlUp).Row Sheets("Sheet2").Range("A" & tuki + 1 & ":A" & tuki + 1).Value = _ .Range(.Cells(Rw, 4), .Cells(Rw, 4)).Value End With strUrl= "URL;http://○○○○■■■■DATFR=#01&DATTO=#$&MSCD=1431&BMCD=30&MENU_ID=2&MENU_ID1=2" strnen = Mid(Str(nen), 2) strtuki = Mid(Str(tuki), 2) strUrl = Replace(Replace(strUrl, "$", strtuki), "#", strnen) strName = Replace(Replace(strName, "$", strtuki), "#", strnen) With Worksheets("Sheet3").QueryTables.Add(Connection:=strUrl, Destination:=Worksheets("Sheet3").Range("A1")) .Name = strtuki .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .WebSelectionType = xlEntirePage .WebFormatting = xlWebFormattingNone .WebPreFormattedTextToColumns = True .WebConsecutiveDelimitersAsOne = True .WebSingleBlockTextImport = False .WebDisableDateRecognition = False .WebDisableRedirections = False .Refresh BackgroundQuery:=True End With Const Col = 4 Dim Rw As Long With Sheets("Sheet3") Rw = .Cells(Rows.Count, Col).End(xlUp).Row Sheets("Sheet4").Range("A" & tuki + 1 & ":A" & tuki + 1).Value = _ .Range(.Cells(Rw, 4), .Cells(Rw, 4)).Value End With End Sub
- 締切済み
- Visual Basic
お礼
おお! あやうく締め切ってしまうところでした。 さらにこんなものもあったんですね。 選択はできるけど、コピーと貼り付けが出来ないんであれば、ばっちりです。 私の使用しているバージョン3.0.15にも同様のものがありました。 これで締め切りにします。 どちらも今後、参考にさせていただきます。 お二方、ありがとうございました。